将枚举绑定到复选框列表[关闭]

问题描述 投票:0回答:1

我想了解,有一个带有两个值的枚举,如何将它们显示在具有相关复选框的列表框中,以及它们是否被选中

这是代码:

public enum Type
{
  Type_A,
  Type_B
}
<ListBox ItemsSource="{Binding Source={Extension:EnumBindingSource {x:Type Model:Type}}}">
 <ListBox.ItemTemplate>
  <DataTemplate>
   <CheckBox IsChecked="{Binding IsChecked}" Content="{Binding Source={Extension:EnumBindingSource {x:Type Model:Type}}}" />
  </DataTemplate>
 </ListBox.ItemTemplate>
</ListBox>

这就是我所期望的

enter image description here

c# wpf data-binding
1个回答
0
投票

首先,声明一个 EnumHelper 类:

namespace YourNamespace
{
    public static class EnumHelper
    {
        public static Array GetValues(Type enumType)
        {
            return Enum.GetValues(enumType);
        }
    }

    public enum myEnum
    {
        Type_A,
        Type_B,
        Type_C,
        Type_D,
        Type_E
    }
}

然后,在您的 XAML(假设为 MainWindow.xaml)中,添加命名空间的引用 [xmlns:local="clr-namespace:YourNamespace"]

<Window xmlns:local="clr-namespace:YourNamespace">

  <!-- Window Content -->

</Window>

然后将此 ObjectProvider 添加到您的 Windows.Resources 中

<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type local:EnumHelper}" x:Key="myEnumKey">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="local:myEnum" />
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

之后,你终于可以像这样使用它了:

<ListBox ItemsSource="{Binding Source={StaticResource myEnumKey}}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

© www.soinside.com 2019 - 2024. All rights reserved.