效果图
实现此效果的必要关键是
Style+DataTemplate
关键代码:
Click="CheckBox_Checked"
Uid="{Binding id}"
IsChecked="{Binding IsSelect , Mode=TwoWay}">
通过Style中的Setter来引入模板。
模板中则是CheckBox。
这样一来,DataGrid中的数据行的复选框也都可以触发事件了。
那么,在头部中的复选框则是使用修改DataGridCheckBoxColumn.HeaderTemplate来实现头部的复选框。
另外必要说明的是,你可以对绑定类使用INotifyPropertyChanged接口,并 ObservableCollection集合类。
后台的绑定类:
public class TEST : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private bool? isSelect;
public int id { get; set; }
public bool? IsSelect
{
get { return isSelect; }
set
{
isSelect = value; OnChanged(new PropertyChangedEventArgs("IsSelect"));
}
}
protected void OnChanged(PropertyChangedEventArgs arg)//具体方法
{
PropertyChanged?.Invoke(this, arg);
}
}
主要实现代码:
ObservableCollection ts = new ObservableCollection();
public MainWindow()
{
InitializeComponent();
TST.AutoGenerateColumns = false;
TST.CanUserAddRows = false;
for (var i = ; i < ; i++)
{
ts.Add(new TEST() { IsSelect = false, id = i });
}
TST.ItemsSource = ts;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
var Check = (sender as CheckBox);
var CUID = int.Parse(Check.Uid);
//全选
if (CUID==-)
{
foreach (var item in ts)
item.IsSelect = true;
Check.Uid = "-2";
return;
}
//全否选
if (CUID==-)
{
foreach (var item in ts)
item.IsSelect = false;
Check.Uid = "-1";
return;
}
var IsSelcted = ts[CUID].IsSelect;
ts[CUID].IsSelect = (IsSealed ? false : true);
var IsSelects = from s in ts
where s.IsSelect == true
select s;
if(IsSelects.Count()==)
{
var Text = String.Empty;
foreach (var ITEM in IsSelects)
Text += ITEM.id + " \n";
MessageBox.Show(Text);
}
}
vue实现单选多选反选全选全不选
单选 当我们用v-for渲染一组数据的时候,我们可以带上index以便区分他们我们这里利用这个index来简单地实现单选
Android开发CheckBox控件,全选,反选,取消全选
在Android开发中我们经常会使用CheckBox控件,那么怎么实现CheckBox控件的全选,反选呢 首先布局我们的界面: <?xml version="1.0" enc ...
JQuery实现 checkbox 全选、反选,子checkbox有没选去掉全选
1. 全选的checkbox选中时,子checkbox全部选中.反之,全部不选 2.子checkbox中,只要有没有被选中的,取消全选checkbox的选中 3.子checkbox的数量和子check ...
转载:Bootstrap之表格checkbox复选框全选
转:http://blog.csdn.net/shangmingchao[商明超的博客] 效果图: HTML中无需添加额外的一列来表示复选框,而是由JS完成,所以正常的表格布局就行了: 版权声明:如需 ...
Bootstrap之表格checkbox复选框全选
效果图: HTML中无需添加额外的一列来表示复选框,而是由JS完成,所以正常的表格布局就行了:
复选框全选、全不选和反选的效果实现VIEW:1592
随机推荐
IOS开发--自定义segment控件,方便自定义样式
系统的segment控件太封闭,想换个颜色加个背景太难了,忍不住自己写一个,以备不时之需 这个控件给出了很多自定义属性的设置,用起来还是比较方便的,需要注意的 itemWidth如果不设置,则会按照控 ...
Win7 64位系统 VS2010连接Oracle报错的问题
1,异常现象: TNS无法识别 2,异常分析:VS2010启动调试的时候,出现异常.但是使用IIS作为服务器的时候,是不会出现异常,也就是可以正常访问到数据库,后来分析是由于VS自带服务器ASP.NE ...
让Emeditor支持markdown编辑博客
让Emeditor支持markdown编辑博客 1. 关于高亮显示 2.生成HTML文件并预览 用惯了Emeditor,最近又开始学习用markdown写博客,怎么让Emeditor支持markdow ...
getcomputedstyle()获取border像素差异问题
getComputedStyle()方法返回的是一个CSS样式声明对象--CSSStyleDeclaration对象(与style属性的类型相同),包含当前元素所有最终使用的CSS属性值:
linux mysql重启命令
1.通过rpm包安装的MySQL 1 2 service mysqld restart /etc/inint.d/mysqld start 2.从源码包安装的MySQL 1 2 3 4 // Linu ...
linux系统下Apache日志分割(按天生成文件)
Apache日志按天显示,修改Apache http.conf文件,注释默认的日志文件,修改为下面2行 ErrorLog "| /usr/local/apache/bin/rotatelog ...
react &; vue 项目创建的方式
创建reactApp的几种方式: create-react-app filename 适用于npm6及以下. npm init react-app filename 适用于npm6以上. npx c ...
easyui的combobox,自动搜索的下拉框
作者:多来哈米 如图,输入关键字,左匹配检索 HTML代码
Java容器解析系列(2) 具体化的第一步——Collection到AbstractCollection
在通向具体化的List,Queue之前,我们需要先了解一下Collection接口和AbstractCollection抽象类,这两个都是处于Collection顶层的存在. Collection接口 ...
poco
源码安装: 1, ./configure --omit=Data/MySQL,Data/ODBC,Zip,Crypto,NetSSL_OpenSSL --no-samples --no-te ...