フィルタリングできるアイテムのリストがあります。Item クラスにはプロパティ IsChecked があります。リストがフィルター処理されている間にこのプロパティを (チェックボックスを介して実行時に) 変更すると、ソース コレクションで変更されないことがあります。私はそれを間違っていますか?
public class ViewModel
{
private ObservableCollection<Item> _items;
public ListCollectionView ItemsView { get; private set; }
private bool _checkAll;
public bool CheckAll
{
get
{
return _checkAll;
}
set
{
if (_checkAll == value)
return;
_checkAll = value;
if (_checkAll)
{
foreach (Item i in ItemsView )
i.IsChecked = true;
}
else
{
foreach (Item i in ItemsView )
i.IsChecked = false;
}
OnPropertyChanged("CheckAll");
}
}
public ViewModel()
{
_items= new ObservableCollection<Item>(this.createList());
ItemsView = CollectionViewSource.GetDefaultView(_items) as ListCollectionView;
ItemsView.Filter = filter;
}
private void filter(object obj)
{
...
}
}
public class Item
{
private bool _isChecked;
public Item()
{
}
public bool IsChecked
{
get {return _isChecked; }
set
{
if (_isChecked == value)
return;
_isChecked = value;
OnPropertyChanged("IsChecked");
}
}
...
}