作成イベントをトリガする場合のリストを更新
-
05-09-2019 - |
質問
私の静的クラス(DataFormSubject)を保持する汎用的なリストオブジェクトとして
private static List<DataForm> dataForms = new List<DataForm>();
その他のクラスに依存するこのリストを必要と言われるが、リストを更新しく作成したカスタムイベント、関連する方法がトリガーの項目を追加または削除されて
public delegate void DataFormsUpdatedHandler(object sender);
public static event DataFormsUpdatedHandler DataFormsUpdatedEvent;
public static void AddDataForm(DataForm df)
{
dataForms.Add(df);
if (DataFormsUpdatedEvent != null)
DataFormsUpdatedEvent(df);
}
public static void RemoveDataForm(DataForm df)
{
dataForms.Remove(df);
if (DataFormsUpdatedEvent != null)
DataFormsUpdatedEvent(df);
}
この一覧表からのご利用の静的クラスを介して財産として
public static List<DataForm> DataForms
{
get { return dataForms; }
//set { dataForms = value; }
}
がここでの問題は、顧客で バイパス 更新イベントアクセスすることにより、財産その直接の追加と削除をクラス!E.g.
DataFormSubject.DataForms.Add(new DataForm);
ってしまいますから、より良い方法をacheiving私が欲しがっているのか?理想的にはどのようアップデートイベントのリストクラスオブザーバーが加入!
解決
利用をお考えの BindingList<T>
または ObservableCollection<T>
;もらいたいものが標準です。
できない面白いのは、サブクラス List<T>
-の方法なのです。 Collection<T>
きり伸ばせる、この場合に必要なものがあるので( BindingList<T>
).
特に、これを提供する。
- IBindingList (多くのUI結合部品などのグリッド)
- ListChanged -このコードに加入することが可能で詳細な通知
他のヒント
あなたはそのような目的のためにObservableCollection
を使用してに見てみたいです。参照してください。このMSDNの記事を始めるためにします。
のみ列挙を示し、静的クラスからのIListを表示しない:
public static IEnumerable<DataForm> DataForms
{
get { return dataForms; }
//set { dataForms = value; }
}
この方法ですべての変更は、
自分のクラスを介して行う必要があります所属していません StackOverflow