如何通知所有 windows static 属性 已更改?
How to notify all windows that static property has changed?
我有很多 windows,当 App.xaml.cs 的静态 属性 发生变化时,我需要更新所有 ListView。
App.xaml.cs:
public partial class App : Application
{
private static ObservableCollection<tasks> _AllTasks;
public static ObservableCollection<tasks> AllTasks
{
get => _AllTasks;
set => _AllTasks = value;
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
AllTasks = new ObservableCollection<tasks>(Core.db.tasks.ToList());
}
}
添加新任务:
private void OnAddTaskExecuted(object p)
{
tasks tsk = new tasks()
{
taskname = "1",
description = "",
date = DateTime.Now,
empID = 2
};
Core.db.tasks.Add(tsk);
Core.db.SaveChanges();
App.AllTasks = new ObservableCollection<tasks>(Core.db.tasks.ToList());
}
如您所见,我正在添加一个新任务并重新定义静态字段。但是我需要不同 windows 中的所有 ListView 来刷新。我假设我需要 AllTasks 集中的 PropertyChanged 事件,但我无法添加它,因为 AllTasks 是静态的。
问题是我不需要每次都创建一个新的 ObservableCollection 实例来刷新它。
我改了private void OnAddTaskExecuted(object p)
来自 App.AllTasks = new ...
到 App.AllTasks.Add(tsk);
并且成功了。
非常感谢@Nawed Nabi Zada
我有很多 windows,当 App.xaml.cs 的静态 属性 发生变化时,我需要更新所有 ListView。
App.xaml.cs:
public partial class App : Application
{
private static ObservableCollection<tasks> _AllTasks;
public static ObservableCollection<tasks> AllTasks
{
get => _AllTasks;
set => _AllTasks = value;
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
AllTasks = new ObservableCollection<tasks>(Core.db.tasks.ToList());
}
}
添加新任务:
private void OnAddTaskExecuted(object p)
{
tasks tsk = new tasks()
{
taskname = "1",
description = "",
date = DateTime.Now,
empID = 2
};
Core.db.tasks.Add(tsk);
Core.db.SaveChanges();
App.AllTasks = new ObservableCollection<tasks>(Core.db.tasks.ToList());
}
如您所见,我正在添加一个新任务并重新定义静态字段。但是我需要不同 windows 中的所有 ListView 来刷新。我假设我需要 AllTasks 集中的 PropertyChanged 事件,但我无法添加它,因为 AllTasks 是静态的。
问题是我不需要每次都创建一个新的 ObservableCollection 实例来刷新它。
我改了private void OnAddTaskExecuted(object p)
来自 App.AllTasks = new ...
到 App.AllTasks.Add(tsk);
并且成功了。
非常感谢@Nawed Nabi Zada