添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

【1.29 DataGrid单击CheckBox响应事件和绑定数据刷新问题】WPF案例代码解析

10 个月前 · 来自专栏 WPF上位机开发系列

需求:从 DataGrid 中选中指定行内容生成新的 DataGrid

DataGrid 自带有 DataGridCheckBoxColumn,但是得点击两次才能选中,第一次是选中行,第二次是选中CheckBox;使用自定义模板 DataGridTemplateColumn 可实现单击选中 CheckBox 并触发单击事件;

自定义模板中,CheckBox 的 IsChecked 属性绑定到变量后,需要特别设置更新触发源,否则绑定值不会更新;

<DataGridTemplateColumn Width="75" Header="启用">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Click="CheckBox_Click"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

根据图一选中项生成图二、图三的数据表格

图二数据生成比较简单,选择图一中 IsChecked 为 True 的行即可;

图三需动态显示图一中选中行,先创建多列(此数量已知,为最大数量),然后将图一中 IsChecked 为 True 对应的列的 Visibility 设置为 Visible,其余设置为 Collapsed;

 for (int i = 0; i < MyDataGird.Columns.Count; i++)
    if (MainWindow.MyMainWindowVM.ListCards[i].IsChecked)
        MyDataGird.Columns[i].Visibility = System.Windows.Visibility.Visible;