我的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类型”。
如何正确指定枚举的名称?
答案 0 :(得分:0)
尝试使用:
{x:Type ns:MyClass+MyEnum}
http://neilmosafi.blogspot.co.uk/2007/08/dec-06-wpfxaml-xtype-and-nested-classes.html
答案 1 :(得分:0)
我决定对此进行解决,并使用我用来加载ComboBox
的相同机制,其中包含从数据库中提取的选项。那就是:
ObservableCollection
,其中包含选项我使用名为ObservableCollection
的通用自定义类的对象填充视图模型类'构造函数中的ItemChoice
。声明如下:
public ObservableCollection&lt; ItemChoice&lt; MyClass.MyEnum&gt;&gt; EnumChoices {get;设置;
我将ComboBox's ItemsSource
属性绑定到XAML中的EnumChoices
集合。
在视图模型的构造函数中,我实例化EnumChocies
集合并使用新的ItemChoice
对象加载它,枚举中的每个选项都有一个。
这一切都有效。我现在可以继续处理代码的其他问题。