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

一、解决方法(将要展示的实体数据模型添加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. WinServer 之 访问同网段服务器 或 同一服务器多虚拟机间的访问

    今天在发布网站时遇到不能访问同网段数据库服务器.具体情况为:web服务端部署在192.168.10.1下,而数据库服务端部署在192.168.10.2下,数据库连接直接配置为192.168.10.2会 ...

  2. Data Structure 之 KMC字符串匹配算法

    有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊 ...

  3. 1.6.7 Detecting Languages During Indexing

    1. Detecting Languages During Indexing 在索引的时候,solr可以使用langid UpdateRequestProcessor来识别语言,然后映射文本到特定语言 ...

  4. NSURLConnection 网络超时的那些事(转别人整理的)

    NSURLConnection 网络超时的那些事(转别人整理的) 在ios平台上做网络开发最常用的两个类: NSMutableURLRequest *urlRequest = [[NSMutableU ...

  5. uva 216 Getting in Line 最短路,全排列暴力做法

    题目给出离散的点,要求求出一笔把所有点都连上的最短路径. 最多才8个点,果断用暴力求. 用next_permutation举出全排列,计算出路程,记录最短路径. 这题也可以用dfs回溯暴力,但是用最小 ...

  6. React Native学习-CameraRoll

    react-native中CameraRoll模块提供了访问本地相册的功能. 在react版本为0.23.0的项目中,不支持Android,而且在iOS中使用CameraRoll还需要我们手动操作: ...

  7. sgu 185 最短路建网络流

    题目:给出一个图,从图中找出两条最短路,使得边不重复. 分析:既然是最短路,那么,两条路径上的所有节点的入边(s,x).出边(x,e)必定是最优的,即 dis[x] = dis[s]+edge_dis ...

  8. Javascript -- toFixed()函数

    Javascript——toFiexed()函数 1. toFixed(n) 限制小数点后位数,四舍五入.n:0~20 . 2. 作用对象必须是number,不能为其他类型.如(8.001).toFi ...

  9. SSH客户端

    Windows: winSCP SecureCRT Ubuntu: SecureCRT:安装方法http://www.phperstar.com/post/323

  10. 浅谈实现placeholder效果的几种方案

    placeholder是html5<input>的一个属性,它提供可描述输入字段预期值的提示信息(hint), 该提示会在输入字段为空时显示.高端浏览器支持此属性(ie10/11在获得焦点 ...