【发布时间】:2020-05-28 18:11:33
【问题描述】:
假设我有一个 ObservableCollection 可以插入、更新和删除。
public ObservableCollection<Item> AllItems {get;set;}
Item 类(实现 INotifyPropertyChanged)如下所示:
public class Item
{
public int Id {get;set;}
public int Kind {get;set;}
public string Text {get;set;}
}
我在一个 ListView 中的视图中有这个绑定。一切正常,这意味着如果我从 ViewModel 中删除、添加或更新 ObservableCollection 中的项目,它们会按预期在我的 ListView 中更新。
但现在我需要在我的视图中将 ListView 拆分为 2 个 ListView。第一个 ListView 必须显示 Item.Kind=1 的所有项目。另一个 ListView 必须包含 Item.Kind=2 的所有项目。
我不介意从我的 ViewModel 绑定到两个不同的 ObservableCollections,但我真的很想要一个我可以做的解决方案:
var item = new Item { Id=22, Kind=1, Text="SomeText" };
AllItems.Add(item);
AllItems.First(x => x.Id==22).Text = "SomeOtherText";
AllItems.Remove(item);
然后这些操作会自动反映在2个ListView中。所以在上面的例子中,新的 Item 只是从第一个 ListView 中查看、更新和删除(其中 Item.Kind=1)。
这可能吗?
编辑:我应该说我尝试使用两个具有相同 ObservableCollection 作为源的 CollectionViewSource。但这失败了,似乎不是正确的解决方案。
【问题讨论】: