如何将枚举绑定到WPF中的组合框控件?

我试图找到一个简单的例子,其中枚举按原样显示。我见过的所有示例都尝试添加漂亮的显示字符串,但我不希望这种复杂性。


基本上我有一个类,它包含我绑定的所有属性,首先将DataContext设置为此类,然后在xaml文件中指定这样的绑定:


<ComboBox ItemsSource="{Binding Path=EffectStyle}"/>

但是这并没有在ComboBoxas项中显示枚举值。


繁华开满天机
浏览 911回答 3
3回答

肥皂起泡泡

我使用了另一种使用MarkupExtension的解决方案。我做了一个提供项目来源的课程:public class EnumToItemsSource : MarkupExtension{&nbsp; &nbsp; private readonly Type _type;&nbsp; &nbsp; public EnumToItemsSource(Type type)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; _type = type;&nbsp; &nbsp; }&nbsp; &nbsp; public override object ProvideValue(IServiceProvider serviceProvider)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return Enum.GetValues(_type)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Cast<object>()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Select(e => new { Value = (int)e, DisplayName = e.ToString() });&nbsp; &nbsp; }}这几乎都是......现在在XAML中使用它:&nbsp; &nbsp; <ComboBox DisplayMemberPath="DisplayName"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ItemsSource="{persons:EnumToItemsSource {x:Type enums:States}}"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SelectedValue="{Binding Path=WhereEverYouWant}"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SelectedValuePath="Value" />将“枚举:状态”更改为您的枚举
打开App,查看更多内容
随时随地看视频慕课网APP