WPFでスケジューラを作成しようとしています。メインウィンドウに中央の静的リストがあります。これは、バックグラウンドワーカーによってロード時に初期化されます。メインウィンドウにはディスパッチタイマーもあり、リストが変更されるたびに間隔が再計算されます。
public static List<ListViewcls> TODOdatalst = null;
public static void RefreshdblList()
{
if (ApplicationState.GetValue<bool>("dbDetected"))
{
TODOdatalst = DataAccess.ReadAllTODODataFromDataBase();
InitialiseDailyReminders();
}
}
ここで、メインウィンドウの静的リストから派生した、監視可能なコレクションにバインドされたリストビューを含む別のウィンドウがあります。アイテムがリストに追加、更新、または削除されるたびに、両方のウィンドウのリストが静的関数を介して手動で更新されます。
private static readonly ObservableCollection<ListViewcls> TO_DOViewlst = new ObservableCollection<ListViewcls>();
public void RefreshView()
{
MainWindow.RefreshdblList();
if (MainWindow.TODOdatalst != null)
InitialiseListView(MainWindow.TODOdatalst);
else
InitialiseListView(DataAccess.ReadAllTODODataFromDataBase());
}
したがって、このアプローチは適切ですか?今のところは機能しますが、将来、リストにアクセスするウィンドウがもう1つあると仮定しますが、3つのウィンドウ間のデータの更新を管理します。誰でももっと良い方法を提案できます。中央リポジトリを保持でき、更新されるたびに他のすべてのリストが更新されます。