加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如果其他单元格更改,请更新DataGrid单元格

发布时间:2020-12-15 07:49:11 所属栏目:百科 来源:网络整理
导读:我有一个视图显示零件.所有部分都包含标识符列表.在我的视图中,我显示零件属性和DataGrid,其中包含该零件的所有标识符. 现在,如果我更改一个标识符的值,我想要另一个值更新为默认值.但是,如果我更改了我的标识符值并设置了其他属性的默认值 – 我的DataGrid
我有一个视图显示零件.所有部分都包含标识符列表.在我的视图中,我显示零件属性和DataGrid,其中包含该零件的所有标识符.

现在,如果我更改一个标识符的值,我想要另一个值更新为默认值.但是,如果我更改了我的标识符值并设置了其他属性的默认值 – 我的DataGrid不会更新.只有当我点击单元格,那么在失去焦点后才能更新.

如何自动更新视图?

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

视图

<DataGrid>
    <DataGridTemplateColumn Header="Company">
        <DataGridTemplateColumn.CellEditingTemplate>
             <DataTemplate>
                  <ComboBox x:Name="CompanyEditComboBox" 
                            ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}},Path=DataContext.Companies}" 
                            SelectedItem="{Binding Company,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                           SelectionChanged = "CompanyEditComboBox_SelectionChanged" />
            </DataTemplate>
         </DataGridTemplateColumn.CellEditingTemplate>
         <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                 <TextBlock Text="{Binding Company}" />
            </DataTemplate>
         </DataGridTemplateColumn.CellTemplate>
     </DataGridTemplateColumn>


    <DataGridTemplateColumn Header="CompanyType">
         <DataGridTemplateColumn.CellEditingTemplate>
              <DataTemplate>
                    <ComboBox x:Name="CompanyTypeEditComboBox" 
                                      ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}},Path=DataContext.CompanyTypes}" 
                                      SelectedItem="{Binding IdentificationCompanyType,UpdateSourceTrigger=PropertyChanged}" />
              </DataTemplate>
          </DataGridTemplateColumn.CellEditingTemplate>
          <DataGridTemplateColumn.CellTemplate>
              <DataTemplate>
                 <TextBlock Text="{Binding IdentificationCompanyType,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}" />
              </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
       </DataGridTemplateColumn>
</DataGrid>

查看代码后

private void CompanyEditComboBox_SelectionChanged(object sender,SelectionChangedEventArgs e)
{
    var vm = (PartViewModel)DataContext;
    var box = (ComboBox) sender;
    var c = (Company) box.SelectedItem;
    vm.SetDefaultCompanyType(c);
}

视图模型

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

解决方法

解决了我不得不加一个
OnPropertyChanged("IdentificationCompanyType");

进入Identification类中的IdentificationCompanyType的设置器.之后,它在DataGrid中自动更新.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读