我正在尝试在 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());
}
那么这种方法是否正确?它现在有效,但假设将来,我还有一个窗口也将访问列表,但随后我将管理 3 个窗口之间的数据刷新......这不正确。任何人都可以提出一些更好的方法,即我可以保留一个中央存储库,并且每当它更新时,所有其他列表都会更新。