65.9K
CodeProject 正在变化。 阅读更多。
Home

绑定到枚举

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.22/5 (4投票s)

2009 年 4 月 1 日

CC (Attr 3U)
viewsIcon

17302

如何绑定到枚举

有时,你会发现自己需要将某个控件或其他控件绑定到枚举的值,例如 System.DayOfWeek。你可能会认为这很简单,但实际上比你想象的要复杂。

我很幸运能与 Paul Jackson 一起工作,他是一位非常聪明的人,尤其是在 WPF 方面。Paul 曾经写过一篇关于绑定枚举的文章,我经常需要 搜索它,所以我决定把它添加到我自己的博客中以备不时之需。

总结一下,你需要执行以下操作:

  1. 添加适当的 XML 命名空间。
  2. 添加一个 ObjectDataProvider,并将 MethodName 设置为 GetValues
  3. 设置控件的 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。以下代码示例展示了如何将我们上面的 ComboBoxSelectedValue 设置为 DayOfWeek.Monday

<ComboBox x:Name="_days"
          ItemsSource="{Binding Source={StaticResource DayValues}}"
          SelectedValue="{x:Static sys:DayOfWeek.Monday}" />

感谢 Paul :).

© . All rights reserved.