Предположим, у меня есть одна коллекция 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. Все работает, то есть, если я удалю, добавлю или обновлю элементы в ObservableCollection из моей ViewModel, они будут обновляться в моем ListView, как и ожидалось.
Но теперь мне нужно разделить ListView на 2 ListView в моем представлении. Первый ListView должен отображать все элементы, у которых Item.Kind = 1. А другой ListView должен иметь все элементы, у которых Item.Kind = 2.
Я не против привязки к двум разным ObservableCollections из моей ViewModel, но мне бы очень хотелось решение, в котором я мог бы просто сделать:
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 ListViews. Итак, в приведенном выше примере новый элемент просматривается, обновляется и удаляется только из первого ListView (где Item.Kind = 1).
Возможно ли это?
РЕДАКТИРОВАТЬ: Я должен сказать, что я пытался использовать два CollectionViewSource с тем же ObservableCollection в качестве источника. Но это не удается и не кажется правильным решением.