将项绑定到枚举

本文关键字:枚举 绑定 | 更新日期: 2023-09-27 18:07:30

我在WPF中做了一些东西,我在Xaml:

<ListView Name="lview" VerticalAlignment="Stretch">
                <ListViewItem>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="C:'blue.png" />
                        <TextBlock>Blue</TextBlock>
                    </StackPanel>
                </ListViewItem>
                <ListViewItem>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="C:'green.png" />
                        <TextBlock>Green</TextBlock>
                    </StackPanel>
                </ListViewItem>
</ListView>

我想实现的是,每个ListViewItem都与Enum值绑定,例如与Enums.COLORS。Blue, Enums.COLORS.Green等等

实现这一目标的最佳方法是什么,最好是不破坏MVVM?

将项绑定到枚举

您可以使用CollectionViewSourceObjectDataProvider,并将ListViewItemsSource绑定到CollectionViewSource。但是,通过绑定到枚举值,我不确定您将如何分配图像源,因为您不会像类一样拥有多个属性,除非您使用转换器来获得正确的图像文件Uri或BitmapSource。

<CollectionViewSource x:Key="ColoursSource"  x:Shared="False"> 
    <CollectionViewSource.Source>
      <ObjectDataProvider 
        MethodName="GetValues" 
        ObjectType="{x:Type system:Enum}">
        <ObjectDataProvider.MethodParameters>
          <x:Type TypeName="entities:Colours" />
        </ObjectDataProvider.MethodParameters>
      </ObjectDataProvider>
    </CollectionViewSource.Source>
  </CollectionViewSource>

<ListView Name="lview" VerticalAlignment="Stretch" ItemsSource="{Binding Source={StaticResource ColoursSource}}">
</ListView>