【发布时间】:2023-03-22 16:24:01
【问题描述】:
My View (V) 绑定到 ViewModel (VM)。在 V 中,我有一个显示在 ListView 中的对象列表。在 ListView 中,我使用了一个 ItemTemplate,每个项目都显示为一个包含项目名称的标签和一个将 SelectedItem 设置为项目的另一个属性的组合框。组合框绑定到一个列表,该列表也是主 V 的 VM 的一部分(我在 Binding 中使用 ElementName=ListBox.DataContext 绑定它...)
到目前为止,一切都运作良好。问题是组合框可以包含很多条目,我想使用分组或过滤。我知道如何使用 ListCollectionView 进行过滤和分组。但我不能简单地将我的 List 更改为 ListCollectionView,因为它被多次使用(对于 ListView 中的每个项目)。一个 ListCollectionView 不能多次使用,但每次使用都有不同的 SelectedItem。
现在我正在寻找一种在 ListView 的 Combobox 中使用分组的简单方法。
有没有办法在 ItemTemplate (DataTemplate) 内的 XAML 中直接定义 ListCollectionView?我还考虑在 ItemsSource Binding 中使用(非共享)转换器,将我的对象列表转换为 ListCollectionView(如果我使用 OneTime Binding,转换器只会被调用一次,对吗?)?我知道我也可以将 VM 中的 List 中的每个对象放在其自己的 ViewModel 中,并且每个对象都为 Combobox 提供自己的 ListCollectionView,但这似乎是最复杂的解决方案(但也许是最干净的?)
还有其他建议或建议吗?
【问题讨论】:
-
Selector.IsSynchronizedWithCurrentItem="False"呢? -
谢谢,这成功了!如果您将评论作为答案发布,我可以将其标记为已接受的答案
标签: c# wpf listview itemtemplate