Привязка двух CollectionViewSource к одной коллекции ObservableCollection
Здравствуйте!
Есть общий пулл моделей, если можно так сказать, который находится в обновляемой коллекции ObservableCollection.
//...MainWindowViewModel.cs
ObservableCollection<ItemModel> Models{ get; set; } //модели добавляются-удаляются туда
/*есть еще пара коллекций, которые должны быть привязаны к общему пуллу: но отображать элементы, фильтруя их в соответствии с конкретной логикой, при необходимости можно было редактировать их */
CollectionViewSource GoodModels { get; set; }
CollectionViewSource ErrorModels { get; set; }
//и сделал фильтры для них
GoodModels.Filter += (sender, e) =>
{
var item = e.Item as ItemModel;
if (item != null)
{
e.Accepted = item.State == ModelState.Ok;
}
};
ErrorModels.Filter += (sender, e) =>
{
var item = e.Item as ItemModel;
if (item != null)
{
e.Accepted = item.State != ModelState.Ok;
}
};
//...MainView.xaml
//В ресурсах создал 2 коллекции и привязал их к свойству Source (я пробовал и ко View)
<CollectionViewSource Source="{Binding Path=GoodModels.Source}" x:Key="src1"/>
<CollectionViewSource Source="{Binding Path=ErrorModels.Source}" x:Key="src2"/>
//отображаются они в DataGrid'ах, у каждого свой
<DataGrid Grid.Column="0" ItemsSource="{Binding Source={StaticResource src1}}"
AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False">
...
</DataGrid>
<DataGrid Grid.Column="1" ItemsSource="{Binding Source={StaticResource src2}}" AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False" CanUserDeleteRows="False">
...
</DataGrid>
На выходе две одинаковые таблицы с одинаковым количеством моделей, т.е. неотфильтрованные совсем, чистая коллекция Models. Что я делаю не так?
При обновлении представлений GoodModels и ErrorModels (View.Refresh()) в лямбда выражение заходит, и все обновляется правильно, но отображаются другие данные.
Как сделать правильно? Благодарю за ответы.