【问题标题】:Clearing content of a datagrid cell based on DataGridCheckBoxColumn checkd or unchecked根据选中或未选中的 DataGridCheckBoxColumn 清除数据网格单元格的内容
【发布时间】:2012-11-27 11:57:40
【问题描述】:

我有一个包含 2 个单元格的数据网格。一个是DataGridCheckBoxColumn,另一个是DataGridTextColumn。当未选中 DataGridCheckBoxColumn 时,我想清除 DataGridTextColumn 的内容。数据来自数据库,但用户可以编辑它。请告诉我该怎么做

<DataGrid Name="--" ItemsSource="{Binding Saukhtemauns}">
   <DataGrid.Columns>
    <DataGridCheckBoxColumn  Header="--"   Binding="{BindingShenaseDarad}">                                                                
    </DataGridCheckBoxColumn>

    <DataGridTextColumn Header="--"  Binding="{Binding IDTakhribi}"/>                                                                                                                                
</DataGrid.Columns>

【问题讨论】:

  • 你有视图模型吗?请显示一些代码,您如何将数据源分配给数据网格?

标签: wpf datagrid


【解决方案1】:

如果您指定为 DataGrid 源的类实现 INotifyPropertyChanged,您可以在视图模型端轻松完成此操作

内部bool属性更改设置文本属性为空

public string StrPropertyThatBindedToGridColumn
{
   get{return _strProp;}
   set{_strProp = value; OnPropertyChanged("StrPropertyThatBindedToGridColumn");}
}

public bool BoolPropertyThatBindedToGridColumn
{
   get{return _bProp;}
   set{
        _bProp = value; 
        OnPropertyChanged("BoolPropertyThatBindedToGridColumn");
        if(value)
            StrPropertyThatBindedToGridColumn = null;
   }
}

如果您正确处理 INotifyPropertyChanged,网格将跟随更改并更新 UI

【讨论】:

  • 我正在使用 linq to sql。此数据网格数据上下文连接到实体类
  • 直接在 UI 中显示 linq to sql 生成的类不是一个好习惯,它应该包装在 viewmodel 中,但是作为一种解决方法,您可以使用自定义布尔属性创建部分类,将这个类绑定到网格而不是第一个,并在此属性的集合中将文本设置为空。我记得linq会生成INotifyPropertyChanged,所以应该足够了
猜你喜欢
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
相关资源
最近更新 更多