我在 WPF 窗口上有一个数据网格,它显示了我的用户列表。这段代码可以正常工作。
private void UpdateGrid()
{
var query = db.Users;
GridUsers.ItemsSource = query.ToArray();
}
有一个编辑按钮,可在前一个窗口的顶部打开一个新窗口,让您编辑其中一个用户。当我完成编辑后,会有一个调用 db.savechanges 的保存。这一切都很好,如果我在那里放一个断点,我的 SQL 数据库中就会发生变化。然后关闭此窗口并在用户屏幕上再次调用 UpdateGrid 方法。数据网格不会更新以显示 SQL 表中的新值。我还有另一个添加和删除用户的按钮,当在执行这些任务之一后调用 UpdateGrid 方法时,数据网格是最新的。
为什么这不能正确更新我的数据网格?
更新:我已经解决了这个问题。我仍然不确定为什么会这样。我的用户屏幕有一个从 null 开始的全局用户变量。以下代码在按下编辑按钮时设置它。
WorkingUser = (User) GridUsers.SelectedItem;
然后编辑屏幕使用以下代码获取正确的实体。
User editUser = (from s in db.Users where (s.UserName == ManageUsers.WorkingUser.UserName) select s).FirstOrDefault();
当调用 db.users.remove(editUser) 然后调用 db.savechanges 时,数据网格更新工作正常。但是,当我编辑 editUser 并调用 db.savechanges 时,dataGrid 无法正确显示。我意识到我不必进行选择,只需使用以下代码即可。
User editUser = ManageUsers.WorkingUser
现在当我编辑editUser updateGrid 工作正常。