WPF:取消子窗体中的编辑后更新父窗体(重置DataContext)



我有一个在WPF数据网格中列出客户的父窗体。

编辑表格的一行是在子表格中完成的:点击一行中的按钮,使用数据网格的选定项打开子表格,并将其分配给子表格数据上下文。

当在子窗体中触发PropertyChanged事件时,父窗体中正在编辑的行列表将更新。

如果我决定通过单击子窗体中的取消按钮来取消当前修改,我将恢复原始值​​编辑的客户:在编辑之前,我克隆了一个要编辑的客户。然后,现在我通过将子窗体DataContext设置为null来重置它,然后将其设置为克隆的客户。这是我在SO上读到的关于强制DataContext刷新的破解,DataContext本身正在更改,而不是其对象的属性。

取消编辑后,子窗体显示我期望的值(克隆客户的属性),而父窗体列表中的关联行没有更新:仍然显示编辑后的客户值。

如何要求父窗体更新自身?由于将子窗体数据上下文重新分配给一个新对象,恐怕我丢失了对象之间的一些引用(丢失了与父窗体数据网格感兴趣的行所选项目的链接)。

感谢您的指导,

编辑:当我准备编辑子表单中的客户时,我会将数据网格选择的项目分配给我的应用程序的静态变量,因为它是单用户的,这样更容易处理"当前客户"。当我取消编辑时,这个静态变量值已经更改,但也许我也必须将它分配回父窗体datagrid所选项?

我是对的:在子窗体关闭后,我必须用更新的对象更新右索引处的父窗体数据网格集合。

// update static variable
SocodifApp.Client = ((Client) Listing.SelectedItem);            
ClientForm editClientForm = new ClientForm();
editClientForm.ShowDialog();
// Get modified static variable after child form closes and update datagrid collection    
// relevant item
_dataContainer.Clients[Listing.SelectedIndex] = SocodifApp.Client;

最新更新