【问题标题】:Wpf ListView Binding items to EnumWpf ListView将项目绑定到枚举
【发布时间】:2015-08-11 14:19:46
【问题描述】:

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

【问题讨论】:

    标签: c# wpf listview


    【解决方案1】:

    您可以将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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2016-03-26
      • 2018-12-28
      • 1970-01-01
      • 2011-01-10
      • 2018-11-12
      相关资源
      最近更新 更多