我想了解,有一个带有两个值的枚举,如何将它们显示在具有相关复选框的列表框中,以及它们是否被选中
这是代码:
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>
这就是我所期望的
首先,声明一个 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>