我编写了一个带有搜索扩展名的自定义 WPF 控件,我们将其命名为MyControl
. Control 是一个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);
}
过滤源集合的视图(从而将其显示在内部列表框中)。
现在假设我们在 XAML 中定义了 10 个具有相同 DynamicSource 的 MyControl。问题是,如果其中一个对源集合应用过滤器,它也会影响所有其他实例。
您将如何更改控件以避免这种行为?