将组合框绑定到枚举和具有该枚举的类的集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将组合框绑定到枚举和具有该枚举的类的集合相关的知识,希望对你有一定的参考价值。

我有一个收藏集:

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类:

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);
    }
}

我的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>

组合框通过此主题的扩展名通过枚举绑定到枚举:Databinding an enum property to a ComboBox in WPF

枚举:

public enum CalculationVariants
{
    [Description("Внутренний")]
    CalculateWithCSharp,
    [Description("Внешний скрипт")]
    CalculateWithPython,
    [Description("Общий")]
    Common
}

我希望Combobox做两件事:

  1. 单击时显示所有可能的枚举值(它们的描述);
  2. 显示UserAutoCalculationTemplatesProperty集合中项目的TemplateType属性的当前值(空闲)。>>
  3. 目前,它只做第一件事,而不是第二件事,如何解决?

我有一个集合:公共静态只读DependencyProperty UserAutoCalculationTemplatesProperty = DependencyProperty.Register(“ UserAutoCalculationTemplates”,typeof(ObservableCollection <...>

答案

以下示例将ComboBox.SelectedValue绑定到OptionsWindow的属性:

以上是关于将组合框绑定到枚举和具有该枚举的类的集合的主要内容,如果未能解决你的问题,请参考以下文章

将枚举属性数据绑定到 WPF 中的组合框

将枚举绑定到 WinForms 组合框,然后设置它

WPF 数据绑定:如何使用 XAML 将枚举数据绑定到组合框? [复制]

将枚举的键值绑定到下拉列表框

枚举 - 组合框与一个项目绑定作为例外

将 ComboBoxes 绑定到枚举......在 Silverlight 中!