将项绑定到枚举
本文关键字:枚举 绑定 | 更新日期: 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?
您可以使用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>
…
<ListView Name="lview" VerticalAlignment="Stretch" ItemsSource="{Binding Source={StaticResource ColoursSource}}">
</ListView>