C# Wpf ListView将项目绑定到枚举

C# Wpf ListView将项目绑定到枚举,c#,wpf,listview,C#,Wpf,Listview,我在WPF中做一些东西,我在Xaml中有这样一个东西: <ListView Name="lview" VerticalAlignment="Stretch"> <ListViewItem> <StackPanel Orientation="Horizontal"> <Image Source="C:\blue.png" />

我在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?

您可以将
CollectionViewSource
ObjectDataProvider
一起使用,并将
ListView
ItemsSource
绑定到
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>


您可以将
CollectionViewSource
ObjectDataProvider
一起使用,并将
ListView
ItemsSource
绑定到
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>