如何在xaml中指定枚举

时间:2012-11-30 17:04:14

标签: c# wpf xaml combobox enums

我的WPF应用程序有一个扩展,我在回答StackOverflow上的一个问题时找到了该扩展,它从枚举中创建了ComboBox的选择。我不记得我从哪个帖子中得到它,但因为这不是问题,所以它无关紧要。

我在我的WPF应用程序中使用DLL作为产品的后端。此DLL中有一个枚举,我希望用户使用ComboBox和前面提到的扩展名进行选择。我在XAML中定义了正确的xmlns。

问题是我的枚举是另一个类的子类。也就是说,它的定义是这样的:

public class MyClass {

    . . .

    public enum MyEnum { . . . }

    . . .
}

我认为ComboBox的XAML应该是这样的:

<ComboBox ItemsSource="{Binding Source={cs:Enumeration {x:Type ns:MyClass.MyEnum}}}" 
          . . . />

当我键入“MyClass”时,当我键入句点以将父类名称与子类型名称分开时,Intellisense会再次提供上层类名称。如果我只是在句点之后输入子类名称,编译器会给我一个错误:“找不到MyClass.MyEnum类型”。

如何正确指定枚举的名称?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我决定对此进行解决,并使用我用来加载ComboBox的相同机制,其中包含从数据库中提取的选项。那就是:

  1. 我在我的视图模型类中创建了一个ObservableCollection,其中包含选项
  2. 我使用名为ObservableCollection的通用自定义类的对象填充视图模型类'构造函数中的ItemChoice。声明如下:

    public ObservableCollection&lt; ItemChoice&lt; MyClass.MyEnum&gt;&gt; EnumChoices {get;设置;

  3. 我将ComboBox's ItemsSource属性绑定到XAML中的EnumChoices集合。

  4. 在视图模型的构造函数中,我实例化EnumChocies集合并使用新的ItemChoice对象加载它,枚举中的每个选项都有一个。

  5. 这一切都有效。我现在可以继续处理代码的其他问题。