C# Wpf ListView将项目绑定到枚举
我在WPF中做一些东西,我在Xaml中有这样一个东西: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" />
<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>