繁体   English   中英

如何在XAML中指定枚举

[英]How to specify an enumeration in xaml

我的WPF应用程序有一个扩展,我在对StackOverflow的一个问题的答案中找到了该扩展,该扩展为枚举创建了ComboBox选择。 我不记得我从哪条帖子中获得了信息,但是由于这不是问题,所以这无关紧要。

我在WPF应用程序中将DLL用于我们产品的后端。 我希望用户从使用ComboBox和上述扩展名中选择的DLL中有一个枚举。 我在XAML中定义了正确的xmlns。

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

public class MyClass {

    . . .

    public enum MyEnum { . . . }

    . . .
}

我认为ComboBox的XAML应该看起来像这样:

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

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

如何正确指定枚举名称?

我决定对此进行讨论,并使用与加载从数据库中提取的选项ComboBox相同的机制。 那是:

  1. 我在保存选择的视图模型类中创建了一个ObservableCollection
  2. 我使用名为ItemChoice的通用自定义类的对象填充视图模型类的构造函数中的ObservableCollection 声明看起来像:

    公共ObservableCollection <ItemChoice <MyClass.MyEnum >> EnumChoices {get; 组;

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

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

所有这一切。 现在,我可以继续讨论代码的其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM