我有一个父表单,其中包含WPF数据网格中的客户列表。
以子代码形式编辑表单行:单击行中的按钮,使用datagrid的选定项打开子表单,并将其分配给子表单datacontext。
在子表单中触发PropertyChanged事件时,正在列出更新的父表单中编辑的行。
如果我决定通过单击子窗体中的取消按钮来取消当前的修改,我将恢复已编辑客户的原始值:在编辑之前我已经克隆了要编辑的客户。然后我现在重置子表单DataContext,方法是将其设置为null,然后再设置为克隆客户。这是我在SO上讨论的关于强制DataContext刷新DataHtext本身的更改,而不是其对象的属性。
取消编辑后,子窗体显示我期望的值(克隆客户的属性),而父窗体列表中的关联行未更新:仍显示已编辑的客户值。
我如何要求父表单自行更新?我害怕通过将子表单datacontext重新分配给一个新对象(丢失到父表单datagrid有趣行选择项的链接)丢失了对象之间的引用。
感谢您的指导,
编辑: 当我准备以子格式编辑客户时,我将datagrid选定项目分配给我的应用程序的静态变量,因为它是单用户,因此更容易处理“当前客户”。当我取消版本时,这个静态变量值已经改变了,但也许我必须将它分配给父表格datagrid选择项目呢?
答案 0 :(得分:0)
我是对的:在子窗体关闭后,我必须使用更新的对象更新右侧索引的父窗体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;