搜索引擎营销题库和答案,seo性能优化,单位建设网站,河间专业做网站电话概述GridControl控件使用我们已经进行了实例讲解#xff0c;这节内容我们列举一个特殊的应用场景#xff1a;表格中有一列CheckBox#xff0c;默认都处于勾选状态#xff0c;当用户通过界面操作后#xff0c;我们要确保用户至少选择了一项#xff0c;相当于一次数据验证这节内容我们列举一个特殊的应用场景表格中有一列CheckBox默认都处于勾选状态当用户通过界面操作后我们要确保用户至少选择了一项相当于一次数据验证这个怎么做呢这里其实有个问题是你每个checkbox的选中与取消选中我们可以通过属性的set属性获知但是难点在于我们每次操作的对象只是集合的一个实例我们要知道集合中其它实例的状态就需要一些特殊的操作可能比较绕我们先看运行结果。运行结果源代码前台StackPanelLabel Contentthis is a tab control page Margin5/dxg:GridControl ItemsSource{Binding GridParamItems} MaxHeight400dxg:GridColumn Header姓名 FieldNameName Width80 /dxg:GridColumn Header选择 FieldNameIsChecked Width80 /dxg:GridColumn Header选择 Width80 dxg:GridColumn.CellTemplateDataTemplateCheckBox IsChecked{Binding RowData.Row.IsChecked}HorizontalAlignmentCenter VerticalAlignmentCenter //DataTemplate/dxg:GridColumn.CellTemplate/dxg:GridColumn/dxg:GridControl/StackPanel这里没啥新的内容和上节一样不清楚的看上一篇内容后台代码using PropertyChanged;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;namespace Caliburn.Micro.Hello
{[AddINotifyPropertyChangedInterface]public class SubTabPageViewModel{public ObservableCollectionGridParamDTO GridParamItems { get; set; } new ObservableCollectionGridParamDTO();public SubTabPageViewModel(){GridParamItems.Add(new GridParamDTO() { Name 张三, IsChecked true });GridParamItems.Add(new GridParamDTO() { Name 李四, IsChecked true });}}public class GridParamDTO{public string Name { get; set; }private bool isChecked;public bool IsChecked { get{return isChecked;}set{try{if (!value){var keyValue Name;if (IsCheckedDic.Count 2){keyValue IsCheckedDic.Keys.Where(k k ! Name).ToList()[0];}if (IsCheckedDic.Count 1|| IsCheckedDic.Count 2 !IsCheckedDic[keyValue]){MessageBox.Show(至少得勾选一个人);if (!IsCheckedDic.Keys.Contains(Name)){IsCheckedDic.Add(Name, isChecked);}else{IsCheckedDic[Name] isChecked;}return;}}isChecked value;if (!IsCheckedDic.Keys.Contains(Name)){IsCheckedDic.Add(Name, isChecked);}else{IsCheckedDic[Name] isChecked;}}catch(Exception ex){MessageBox.Show(${ex});}}}public static Dictionarystring,bool isCheckedDic;public static Dictionarystring, bool IsCheckedDic{ get{if(isCheckedDic null){isCheckedDic new Dictionarystring, bool();}return isCheckedDic;}set{isCheckedDic value;}} }
}这里我们增加了一个静态的字典每次将我们当前是否选中的一个状态存起来这样每次前台界面进行操作以后我们就可以通过字典中的信息去进行判断目前是否至少有一个人员信息被选中了.感觉方法不够丝滑如有更好的方法实现这个需求麻烦给小编留言