【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;