Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果其他单元格发生更改,则更新DataGrid单元格_C#_Wpf_Mvvm_Datagrid - Fatal编程技术网

C# 如果其他单元格发生更改,则更新DataGrid单元格

C# 如果其他单元格发生更改,则更新DataGrid单元格,c#,wpf,mvvm,datagrid,C#,Wpf,Mvvm,Datagrid,我有一个显示零件的视图。所有部分都包含一个标识符列表。在我的视图中,我显示零件属性和包含该零件所有标识符的数据网格 现在,如果我更改一个标识符的值,我希望另一个值更新为默认值。但是,如果我更改标识符值并设置其他属性的默认值,则我的DataGrid不会更新。只有当我点击单元格时,它才会在失去焦点后得到更新 如何自动更新视图 我想问题是我不想更新零件的直接属性,而是更新列表中作为零件属性的属性 看法 视图模型 public void SetDefaultCompanyType(Company c)

我有一个显示零件的视图。所有部分都包含一个标识符列表。在我的视图中,我显示零件属性和包含该零件所有标识符的数据网格

现在,如果我更改一个标识符的值,我希望另一个值更新为默认值。但是,如果我更改标识符值并设置其他属性的默认值,则我的DataGrid不会更新。只有当我点击单元格时,它才会在失去焦点后得到更新

如何自动更新视图

我想问题是我不想更新零件的直接属性,而是更新列表中作为零件属性的属性

看法

视图模型

public void SetDefaultCompanyType(Company c)
{
    SelectedIdentification.IdentificationCompanyType = c.DefaultCompanyType;
    OnPropertyChanged("IdentificationCompanyType");
}

解决了。我不得不添加一个

OnPropertyChanged("IdentificationCompanyType");

进入
Identification
类中
IdentificationCompanyType
的setter。之后,它会在数据网格中自动更新。

我想理解你的问题,所以当你选择一个不同的
公司
时,它应该在你的
数据网格的所选行中选择默认的
公司类型
?太好了,现在,如果公司类型未从默认值更改为
CompanyType
,它将保存为默认值。如果您只依赖组合框的实际文本,那么这是一个简单的解决方案,但是如果您需要整个对象,那么您需要设置该组合框的基础
SelectedItem
,否则在保存时将使用
绑定
值。如果这有意义的话?出于好奇,为什么不在
IdentificationCompanyType
属性的ViewModel中使用PropertyChanged事件处理程序来设置DefaultCompanyTime(无论何时更改)?当回到调试WPF应用程序时,我发现如果我所有的更改逻辑都在一个地方,而不是像这里这样分散在UI中,那么就更容易了。如果您的问题得到解决,您应该将其标记为已解决。
public void SetDefaultCompanyType(Company c)
{
    SelectedIdentification.IdentificationCompanyType = c.DefaultCompanyType;
    OnPropertyChanged("IdentificationCompanyType");
}
OnPropertyChanged("IdentificationCompanyType");