検索拡張機能を使用してカスタム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);
}
ソースコレクションのビューをフィルタリングします(したがって、内部のリストボックスに表示します)。
ここで、同じDynamicSourceを使用してXAMLで定義されたこれらのMyControlが10個あるとします。問題は、それらの1つがソースコレクションにフィルターを適用すると、他のすべてのインスタンスにも影響を与えることです。
この動作を回避するために、コントロールをどのように変更しますか?