带有Combobox的ItemTemplate,ListCollectionView

时间:2017-10-27 08:02:45

标签: c# wpf listview itemtemplate

我的视图(V)绑定到ViewModel(VM)。在V中,我有一个ListView中显示的对象列表。在ListView中,我使用ItemTemplate,每个项目显示为包含项目名称的Label和一个Combobox,其中SelectedItem设置为项目的另一个属性。 Combobox绑定到一个List,它也是主V的VM的一部分(我使用绑定中的ElementName = ListBox.DataContext绑定它...)
到目前为止,一切都运作良好。问题是Combobox可以包含很多条目,我想使用分组或过滤。我知道如何使用ListCollectionView进行过滤和分组。但我不能简单地将我的List更改为ListCollectionView,因为它被多次使用(对于ListView中的每个项目)。一个ListCollectionView不能多次使用,但每次使用时都有不同的SelectedItem 现在我正在寻找一种在ListView的Combobox中使用分组的简单方法。 有没有办法直接在ItemTemplate(DataTemplate)中的XAML中定义ListCollectionView?我还想过在ItemsSource Binding中使用(非共享)转换器将我的对象列表转换为ListCollectionView(如果我使用OneTime绑定,转换器只会被调用一次,这是正确的吗?)?我知道我也可以将每个对象放在VM中的List中自己的ViewModel中,并且每个对象都为Combobox提供了自己的ListCollectionView,但这似乎是最复杂的解决方案(但也许是最干净的?)
还有其他建议或建议吗?

1 个答案:

答案 0 :(得分:1)

如果您想在多个组合框(或其他选择器)中使用相同的ICollectionView而不同步其所选项目,则需要在每个组合框上明确设置IsSynchronizedWithCurrentItem="False"