I have a collection:
public static readonly DependencyProperty UserAutoCalculationTemplatesProperty = DependencyProperty.Register("UserAutoCalculationTemplates", typeof(ObservableCollection<AutoCalculationTemplate>), typeof(Options));
public ObservableCollection<AutoCalculationTemplate> UserAutoCalculationTemplates
{
get => (ObservableCollection<AutoCalculationTemplate>)GetValue(UserAutoCalculationTemplatesProperty);
set => SetValue(UserAutoCalculationTemplatesProperty, value);
}
AutoCalculationTemplate Class:
public class AutoCalculationTemplate : INotifyPropertyChanged
{
private CalculationVariants _templateType;
public CalculationVariants TemplateType
{
get
{
return _templateType;
}
set
{
_templateType = value;
OnPropertyChanged(new PropertyChangedEventArgs("TemplateType"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChanged?.Invoke(this, e);
}
}
My XAML.
<DataGrid ItemsSource="{Binding UserAutoCalculationTemplates, ElementName=OptionsWindow,Mode=TwoWay,NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" Name="AutoCalculaionTemplates">
<DataGrid.Columns>
<DataGridTemplateColumn Header="">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
x:Name="AutoCalculationTypeCombo"
ItemsSource="{Binding Source={enum:Enumeration {x:Type options:CalculationVariants}}}"
DisplayMemberPath="Description"
SelectedValue="{Binding UserAutoCalculationTemplates.TemplateType, ElementName=OptionsWindow,Mode=TwoWay,NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Value"
DropDownClosed="AutoCalculationTypeCombo_OnDropDownClosed"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGrid.Columns>
</DataGrid>
Combobox bound to enum via extension from this topic: Databinding an enum property to a ComboBox in WPF:
enum:
public enum CalculationVariants
{
[Description("Внутренний")]
CalculateWithCSharp,
[Description("Внешний скрипт")]
CalculateWithPython,
[Description("Общий")]
Common
}
I want Combobox to do two things:
- display all possible values of enum (their descriptions) on click;
- display current value of TemplateType propertie of items in UserAutoCalculationTemplatesProperty collection (idle).
For now it only does first thing, but not the second, how do I fix it?