【发布时间】:2021-12-17 07:58:35
【问题描述】:
我是 MVVM 的新手,在更新列表时遇到问题。
我有 2 个窗口和 ListViews。它们连接到属性“任务”。当我向我的数据库添加新行时,我需要刷新 ListViews。我已经完成了,但只针对 1 个窗口。
向数据库表添加新行
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();
Tasks = new ObservableCollection<tasks>(Core.db.tasks);
//it updates only in the window from which I'm adding the row
}
viewmodel ctor
public MainWindowViewModel()
{
AddTask = new RelayCommand(OnAddTaskExecuted, p => true);
Tasks = new ObservableCollection<tasks>(Core.db.tasks);
}
所以在单击 btn 后,我遇到了这种情况。 ListView 仅在我单击的窗口中更新,而在另一个窗口中不更新(新任务是第一个)img
附:我有 2 个相同的窗口,我只是通过 btn 单击创建一个新的相同窗口。那只是为了测试。我实际上正在创建一个包含大量页面的大型项目,并且我需要更新其中包含任务的每个集合。
【问题讨论】:
-
您是否在两个窗口中使用相同的视图模型?
-
是的,这就是我刚刚通过 btn click 重新打开它的同一个窗口
-
这不是我问的。我再试一次:您是否在两个窗口中使用相同的视图模型,即相同的实例?
-
嗯,明白了。那就是问题所在。我需要使用不同的实例
标签: c# wpf entity-framework mvvm