WPF中DataGrid实现全选

本文介绍了两种在WPF中实现DataGrid全选功能的方法:一是通过使用模板列实现;二是利用INotifyPropertyChanged属性进行数据绑定更新。这两种方法可以结合使用,通过第一种方法设置前台界面,第二种方法处理后台数据更新。

方法一:使用模板列

前台代码如下

<DataGrid Grid.Row="2" Name="dgPersonList" BorderThickness="0" Grid.ColumnSpan="2" Margin="0,5,0,0" SelectionChanged="dgPersonList_SelectionChanged">
	<DataGrid.Columns >
		<DataGridTemplateColumn Header="" Width="40">
			<DataGridTemplateColumn.CellTemplate>
			<DataTemplate>
				<CheckBox Name="chk" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
			</DataTemplate>
			</DataGridTemplateColumn.CellTemplate>
		</DataGridTemplateColumn>
	</DataGrid.Columns >
</DataGrid>

后台实现如下 

DataGridTemplateColumn templeColumn = dgPersonList.Columns[0] as DataGridTemplateColumn;
FrameworkElement fwElement = dgPersonList.Columns[0].GetCellContent(dgPersonList.SelectedItem);
CheckBox cBox = templeColumn.CellTemplate.FindName("chk", fwElement) as CheckBox;
cBox.IsChecked = !cBox.IsChecked;


方法二:INotifyPropertyChanged属性通知

   public class Person : INotifyPropertyChanged
    {
        private bool _IsChecked = false;
        public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; NotifyPropertyChanged(); } }
		
		
		public event PropertyChangedEventHandler PropertyChanged;
        //此方法在每个属性的set中调用
        //在可选参数propertyName上应用CallerMemberName特性
        //调用此方法时,调用方的信息将替换为可选参数的参数,即在set中调用此方法,propertyName="当前属性的名称"
        public void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
	}

后台代码

 var person = dgPersonList.SelectedItem as Person;
 person.IsChecked = true;


题外话:

两种方法也可以混用,使用第一方法的前台,第二方法的后台,只需要加上

dgPersonList.Items.Refhresh();





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值