wpf中使用mvvm,解决checkbox全选问题
2015-06-11 20:09
417 查看
<DataGrid Name="dataGrid" IsReadOnly="False" Width="600" Height="400" AutoGenerateColumns="False" ItemsSource="{Binding GeneryModelList}" >
<DataGrid.Columns>
<DataGridTemplateColumn Width="150">
<DataGridTemplateColumn.Header>
<CheckBox Command="{ Binding DataContext.SelectOrUnSelectAll,RelativeSource={RelativeSource AncestorType=DataGrid}}" Content="全选"></CheckBox>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
开始原因是由于并不知道使用数据模板,需要加入数据源,要找到数据源的作用域。后面的命令部分代码如下:
public ICommand SelectOrUnSelectAll
{
get { return new GeneryModelSoft.Commands.Command(p => SelectAll()); }
}
protected void SelectAll()
{
if (generyModelList != null&&isSelectFlag==false)
{
for (int i = 0; i < generyModelList.Count; i++)
{
generyModelList[i].IsSelected = true;
}
isSelectFlag = true;
}
else if (generyModelList != null && isSelectFlag == true)
{
for (int i = 0; i < generyModelList.Count; i++)
{
generyModelList[i].IsSelected = false;
}
isSelectFlag = false;
}
}
<DataGrid.Columns>
<DataGridTemplateColumn Width="150">
<DataGridTemplateColumn.Header>
<CheckBox Command="{ Binding DataContext.SelectOrUnSelectAll,RelativeSource={RelativeSource AncestorType=DataGrid}}" Content="全选"></CheckBox>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
开始原因是由于并不知道使用数据模板,需要加入数据源,要找到数据源的作用域。后面的命令部分代码如下:
public ICommand SelectOrUnSelectAll
{
get { return new GeneryModelSoft.Commands.Command(p => SelectAll()); }
}
protected void SelectAll()
{
if (generyModelList != null&&isSelectFlag==false)
{
for (int i = 0; i < generyModelList.Count; i++)
{
generyModelList[i].IsSelected = true;
}
isSelectFlag = true;
}
else if (generyModelList != null && isSelectFlag == true)
{
for (int i = 0; i < generyModelList.Count; i++)
{
generyModelList[i].IsSelected = false;
}
isSelectFlag = false;
}
}
相关文章推荐
- 高效采样方法
- AppDelegate的详解
- [BZOJ4085][Sdoi2015]quality && 线段树 (TLE)
- 用strlen函数计算字符串的长度(C语言)
- Permutations II
- error LNK2005: "class Managers manager" (?manager@@3VManagers@@A) 已经在 Managers.obj 中定义(实例化问题出错)
- Linux TCP通信详解&UDP聊天室(6.9)
- 图力导引布局算法
- 在同一台电脑使用两个github账户
- Netty IO线程模型学习总结
- [智商只有五分的傻逼如何拿到70分]
- 中缀表达式转后缀表达式的步骤描述
- python fabric远程操作和部署
- OC-数组类
- ImageIcon & Image - 在组件上打印图片
- codeforces 550A
- HDU1728---逃离迷宫
- ios第一天
- poj 1655 树形dp
- GIS空间分析 对栅格数据分析,距离分析,点位置查找