绑定到枚举






3.22/5 (4投票s)
如何绑定到枚举
有时,你会发现自己需要将某个控件或其他控件绑定到枚举的值,例如 System.DayOfWeek。你可能会认为这很简单,但实际上比你想象的要复杂。
我很幸运能与 Paul Jackson 一起工作,他是一位非常聪明的人,尤其是在 WPF 方面。Paul 曾经写过一篇关于绑定枚举的文章,我经常需要 搜索它,所以我决定把它添加到我自己的博客中以备不时之需。
总结一下,你需要执行以下操作:
- 添加适当的 XML 命名空间。
- 添加一个 ObjectDataProvider,并将
MethodName
设置为GetValues
。 - 设置控件的
ItemsSource
属性。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib" ...>
<Window.Resources>
<ObjectDataProvider x:Key="DayValues"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="sys:DayOfWeek" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
...
<ComboBox x:Name="_days"
ItemsSource="{Binding Source={StaticResource DayValues}}" />
...
</Grid>
</Window>
Paul 的文章中没有提到如何指定 SelectedValue
。以下代码示例展示了如何将我们上面的 ComboBox 的 SelectedValue
设置为 DayOfWeek.Monday
。
<ComboBox x:Name="_days"
ItemsSource="{Binding Source={StaticResource DayValues}}"
SelectedValue="{x:Static sys:DayOfWeek.Monday}" />
感谢 Paul :).