ComboBox 绑定到枚举,我做错了什么?
我进行了搜索,似乎很容易将枚举绑定到组合框,只需通过静态 Enum.GetValues 方法中的 ObjectDataProvider 将枚举值作为字符串列表检索,但是我无法让它工作。 错误是找不到类型 ContactExportType。
我有一个名为 ContactExportType 的枚举,它驻留在 Enums 类中。 此类是 CEM.Marketing.Objects 命名空间的一部分。
这就是我所拥有的:
<UserControl
xmlns:local="clr-namespace:CEM.Marketing.Objects"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<Grid.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="ContactExportTypes">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:ContactExportType" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Grid.Resources>
</Grid>
<ComboBox
ItemsSource="{Binding {StaticResource ContactExportTypes}}"
...
谢谢, 安吉拉
I have searched around and it seems very easy to bind enums to combobox, just retrieve Enum values as a list of strings via an ObjectDataProvider from the static Enum.GetValues method, however i can't get it to work. The error is Type ContactExportType was not found.
I have an enum called ContactExportType, it resides on Enums class. This class is part of the CEM.Marketing.Objects namespace.
This is what i have:
<UserControl
xmlns:local="clr-namespace:CEM.Marketing.Objects"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<Grid.Resources>
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="ContactExportTypes">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:ContactExportType" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Grid.Resources>
</Grid>
<ComboBox
ItemsSource="{Binding {StaticResource ContactExportTypes}}"
...
Thanks,
Angela
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要访问嵌套类型,您应该使用“+”分隔符:
顺便说一句,有一种更简单的方法可以绑定到枚举的值,而无需使用 ObjectDataProvider。 它基于自定义标记扩展:
以下是 EnumValues 标记扩展的代码:
To access a nested type, you should use the "+" separator :
By the way, there is a simpler way to bind to the values of an enum, without using an ObjectDataProvider. It's based on a custom markup extension :
Here is the code for the EnumValues markup extension :
应该是
并且
应该是
sys:Enum 指向 Enum 框架类
参数中的类型名称指向您的完全限定类型名称。
查看 Bea Stollnitz 的博客
should be
and
should be
the sys:Enum points to the Enum framework class
the typename in the parameter points to your fully qualified type-name.
check Bea Stollnitz's blog