デリゲートの結果を返す ObservableCollection プロパティにバインドするための概念実証に取り組んでいました。デリゲートにもプロパティが設定されているため、使用する式を変更でき、コレクションの OnPropertyChanged をトリガーします。これにより、ComboBox を Collection にバインドできます。式/クエリを変更すると、ComboBox で使用可能な選択肢も変更されます。
コード:
public delegate List<string> Del();
private Del _query;
public Del Query
{
get
{
return _query;
}
set
{
_query= value;
OnPropertyChanged("BindList");
}
}
private ObservableCollection<string> bindList;
public ObservableCollection<string> BindList
{
get
{
var results = Query();
bindList = new ObservableCollection<string>(results);
return bindList;
}
set
{//I believe I need this setter for the extra functionality provided by ObservableCollections over Lists
if(bindList != value) {
bindList = value;
OnPropertyChanged("BindList");
}
}
}
これは機能するので、簡単にバインドできるクラスを作成したいと考えています。やり方を教えていただきたいです。ObservableCollection のサブクラス化についていくつか考えましたが、Items の設定方法に問題がありました。また、IEnumerable や ICollectionView などのインターフェイスを (通知インターフェイスと共に) 使用するカスタム クラスについても検討しました。
要約すると、サブクラス化/インターフェイスに関して、メンバーがデリゲート クエリ (具体的には LINQ) に基づいているコレクションを組み込むクラスをどのように構築しますか?
前もって感謝します。