Я написал собственный элемент управления WPF с расширением поиска, назовите его MyControl
.
Элемент управления является потомком класса ItemsControl
.
Итак, я подаю ему источник данных следующим образом:
Сам элемент управления использует
protected override void OnItemsSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue)
{
if (newValue != null)
{
ICollectionView view = CollectionViewSource.GetDefaultView(newValue);
view.Filter += this.FilterPredicate;
}
if (oldValue != null)
{
ICollectionView view = CollectionViewSource.GetDefaultView(oldValue);
view.Filter -= this.FilterPredicate;
}
base.OnItemsSourceChanged(oldValue, newValue);
}
чтобы отфильтровать представление исходной коллекции (отображая ее во внутреннем ListBox).
Теперь предположим, что у нас есть 10 из этих MyControls, определенных в XAML с тем же DynamicSource. Проблема заключается в том, что если один из них применит фильтр к исходной коллекции, это затронет и все остальные экземпляры.
Как бы вы изменили элемент управления, чтобы избежать этого?