发现在DataGrid中添加dataGridCheckBoxColumn时,checkBox控件并不能很好的工作,由此我们需要稍作改造使其能够支持单选,多选,和全选功能。这其中涉及的内容有Trigger,style(如果对UI有统一要求的话),template,I NotifyPropertyChanged。
实现的大概思路为:
1:在Resource中自定义一个数据模板DataTemplate,在数据模板中来定义用户控件CheckBox。然后针对自定义的数据模板设定style,并在style中添加trigger。==》
2:在datagrid的dataGridCheckBoxColumn中引用定义好的静态资源Style==》
3:定义数据源并实现接口INotifyPropertyChanged,将数据源绑定到dataGrid上。至此,改造工作已经做完了,剩下的就是逻辑处理相关的内容了。
源码地址:http://download.csdn.net/download/geshicuowu/9947354
效果图:
关键代码
<Window x:Class="DataGridCheckBoxExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DataGridCheckBoxExample"
mc:Ignorable="d"
Title="DataGridCheckBoxExample" Height="300" Width="300"
Loaded="Window_Loaded">
<Grid>
<Grid.Resources>
<ResourceDictionary>
<!--定义template-->
<DataTemplate x:Key="CheckBoxDataGridTemplate">
<Grid>
<