Я хочу понять, имея Enum с двумя значениями, как отображать их в ListBox со связанными флажками и проверены они или нет.
Вот код:
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>
Microsoft учится: Как привязываться к перечислению (WPF .NET)