问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中

一、解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了)

1. xaml

  <sdk:DataGrid x:Name="UserDG"  AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn >
<sdk:DataGridTemplateColumn.HeaderStyle>
<Style TargetType="sdk:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="sdk:DataGridColumnHeader">
<Grid Height="" VerticalAlignment="Center">
<Border BorderBrush="#FF71A2F2" BorderThickness="" Height="" VerticalAlignment="Top" Margin="0,-1">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.477,0">
<GradientStop Color="#FFF4EEEE" Offset=""/>
<GradientStop Color="White" Offset=""/>
<GradientStop Color="#FF70C3E9" Offset="0.092"/>
<GradientStop Color="#FF77BFE0" Offset="0.933"/>
<GradientStop Color="#FFD0E3EB" Offset="0.486"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
<ContentPresenter.Content>
<CheckBox Margin="7,2" x:Name="cbSelectAll" Click="RefreshShow"></CheckBox>
</ContentPresenter.Content>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </sdk:DataGridTemplateColumn.HeaderStyle>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="CK" HorizontalAlignment="Center" VerticalAlignment="Center" Tag="{Binding LoginNM}" Click="ck_Checked" IsChecked="{Binding IsCheck,Mode=TwoWay}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="序号" >
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Padding="" HorizontalAlignment="Center"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<sdk:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
<sdk:DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>

2. 在要展示的是实体数据模型里添加 bool类型的属性,并绑定到xaml页面中

  private bool isCheck;

        public bool IsCheck
{
get { return isCheck; }
set { isCheck = value; NotifyPropertyChanged("IsCheck"); }
}

3.xaml.cs后台代码如下

//添加行号
private void InitList()
{ UserList.LoadingRow += (o, e) =>
{
(UserList.Columns[].GetCellContent(e.Row) as TextBlock).Text = (e.Row.GetIndex() + ).ToString();
};
}
#region 全选/不全选解决方法
private void RefreshShow(object sender, System.Windows.RoutedEventArgs e)
{
_selectList.Clear();
CheckBox quxuan = (CheckBox)sender;
if (this.UserList.ItemsSource != null)
{
if (quxuan.IsChecked.Value)
{
foreach (var item in userinfos)
{
item.IsCheck = true;
_selectList.Add(item.LoginNM);
}
#region
//foreach (var obj in this.UserList.ItemsSource)
//{
// var col = this.UserList.Columns[0].GetCellContent(obj);
// if (col != null)
// {
// //下面就是获取选中或取消的CheckBox
// CheckBox cb1 = this.UserList.Columns[0].GetCellContent(obj).FindName("CK") as CheckBox;
// var id = (string)cb1.Tag;
// cb1.IsChecked = quxuan.IsChecked; // }
//}
#endregion
}
else
{
foreach (var item in userinfos)
{
item.IsCheck = false;
_selectList.Remove(item.LoginNM);
} }
}
else
{
MessageBox.Show("当前没有数据可选择!");
quxuan.IsChecked = false;
return;
} }
private List<string> _selectList = new List<string>();
private void ck_Checked(object sender, RoutedEventArgs e)
{
foreach (var item in userinfos)
{
if (item.IsCheck)
{
if (!_selectList.Contains(item.LoginNM))
{
_selectList.Add(item.LoginNM);
}
}
else
{
_selectList.Remove(item.LoginNM);
}
} }
#endregion

二、解决方法(在datagrid数据展示外面添加滚动条<ScrollViewer Grid.Row="1" >,后台添加相应的方法,就可以了)

<ScrollViewer Grid.Row="" >
<sdk:DataGrid x:Name="UserDG" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Id">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="cb" Tag="{Binding Id}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<sdk:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
<sdk:DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</ScrollViewer>

Silverlight 中DataGrid中全选与非全选问题的更多相关文章

  1. WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选)

    原文:WPF中DataGrid中的DataGridCheckBoxColumn用法(全选,全否,反选) 前台代码 <DataGrid.Columns> <DataGridCheckB ...

  2. 让DuiLib CheckBox支持全选、全不选、非全选三种状态

    原文 https://blog.csdn.net/EveyX/article/details/38433783 DuiLib官方库中的Checkbox只有Checked和Uncheck两种状态,但我们 ...

  3. esayUi中datagrid中json串为空时,显示上一次数据的解决方法

    function initSearchProject(startDate,finishDate,flag) {        $("#finishDate").val(finish ...

  4. Silverlight 查询DataGrid 中匹配项 ,后台改变选中行颜色

    需求:根据关键字(参会人号码或名称)查找参会人,在datagird 中高亮显示 界面:我在界面上增加了一个文本框和按钮,进行查找操作 操作说明: 根据关键字进行搜索:输入关键字 点击查找,如果找到 以 ...

  5. 【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。

    尝试了很多种方案,由于Datagrid动态生成的每行父子comboBox的Name的不确定性,给父ComboBox绑定事件中获取 子ComboBox很难根据Name获取到. 花了不少时间和公司同事商讨 ...

  6. 【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。

    今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑 ...

  7. checkbox全选与非全选之间的切换

    <div id="congras_area"> <input type="checkbox" name="" id=&qu ...

  8. jeecg中datagrid中获取选定行的字段值

    datagrid代码如下: <t:datagrid name="orderMainList" checkbox="true" pagination=&qu ...

  9. jquery中datagrid中getSelected和getSelections的应用

    http://blog.sina.com.cn/s/blog_8e50ede90101fff9.html 刚开始使用jquery的datagrid就知道如果要对特定的一行进行编辑,可以是 $('#on ...

随机推荐

  1. C# 读取文件的修改时间、访问时间、创建时间

    C# 获取文件的各个时间如下: 表2<ccid_nobr> 属性 功能和用途 Attributes 返回和文件相关的属性值,运用了FileAttributes枚举类型值 CreationT ...

  2. 美国H1B基本情况及相关数据

    H-1B是外国人在美国工作的签证,从美国学校毕业之后会有12个月的OPT实习期,在OPT结束之前必须申请到H1B签证才能在实习期结束后继续工作. H1B需要由雇佣你的公司帮你申请,也就是说必须先找到工 ...

  3. Inversions

    There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount o ...

  4. 结合源码看nginx-1.4.0之nginx模块组织结构详解

    目录 0. 摘要 1. nginx模块组织结构 2. nginx模块数据结构 3. nginx模块初始化 4. 一个简单的http模块 5. 小结 6. 参考资料 0. 摘要 nginx有五大优点:模 ...

  5. 判断某个对象是不是DOM对象

    在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否DOM对象,首先想到的无非就是它是否具有DOM ...

  6. [课程相关]附加题——stack的理解

    一.stack的三种解释 stack有三种解释,我个人理解如下. 1.用户自定义的stack 用户自定义的stack就是一般意义上的后进先出队列,从名字上就能理解了,stack由下向上增长,有一个顶指 ...

  7. java 的文件读取操作

    /** * @param filePath 文件的全路径 * 返回我们读取到的文件内容 * **/ public static String readFile(String filePath) { F ...

  8. Oracle基础<4>--程序包

    一:程序包定义(包括1.程序包规范 2.程序包主体) 程序包是一种数据库对象,它是对相关pl/sql 类型.子程序.游标.异常.变量和常量的封装. 1.程序包规范:可以声明类型.变量.常量.异常.游标 ...

  9. VMware系统运维(十七)部署虚拟化桌面 Horizon View Manager 5.2 配置池授权

    1.先在域里面新建一个用户组,添加用户 2.点击"授权....",点击"添加...",设置指定的域用户组,点击"确定" 3.授权完成

  10. 剑指Offer32 丑数

    /************************************************************************* > File Name: 32_UglyNu ...