博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight之我见——DataGrid数据验证
阅读量:5940 次
发布时间:2019-06-19

本文共 2645 字,大约阅读时间需要 8 分钟。

 
用DataGrid进行数据验证,一句话:太简单了,为什么?因为它自身已经具备了很完善的数据验证功能。
好,说多无益,最好的办法,来,写个例子试试。
老规矩,先准备点数据来测试,既然要数据验证,就不能全弄字符串的,弄点整型的,日期型的,这样就有利于演示。
 
public class Employee { public string Name { get; set; } public int Age { get; set; } public DateTime Birthday { get; set; } }
该类声明三个属性,分别是字符串,整型,日期型。
好,我们来看看DataGrid默认的验证功能。
要进行验证只需做好以下工作:
把Binding的ValidatesOnExceptions设为True,NotifyOnValidationError设为true,UpdateSourceTrigger设置为Explicit。
好,看XAML:
 
<UserControl x:Class="DataValidationSample.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"> <Grid x:Name="LayoutRoot"> <sdk:DataGrid x:Name="Grid" CanUserReorderColumns="True" CanUserSortColumns="True" AutoGenerateColumns="False"> <sdk:DataGrid.Columns> <!--声明列,并进行绑定--> <sdk:DataGridTextColumn Header="姓名" Width="auto"> <sdk:DataGridTextColumn.Binding> <Binding Path="Name" Mode="TwoWay" UpdateSourceTrigger="Explicit" ValidatesOnExceptions="True" NotifyOnValidationError="True"/> </sdk:DataGridTextColumn.Binding> </sdk:DataGridTextColumn> <sdk:DataGridTextColumn Header="年龄" Width="auto"> <sdk:DataGridTextColumn.Binding> <Binding Path="Age" Mode="TwoWay" ValidatesOnExceptions="True" NotifyOnValidationError="True" UpdateSourceTrigger="Explicit"/> </sdk:DataGridTextColumn.Binding> </sdk:DataGridTextColumn> <sdk:DataGridTextColumn Header="生日" Width="auto"> <sdk:DataGridTextColumn.Binding> <Binding Path="Birthday" Mode="TwoWay" ValidatesOnExceptions="True" NotifyOnValidationError="True" UpdateSourceTrigger="Explicit"/> </sdk:DataGridTextColumn.Binding> </sdk:DataGridTextColumn> </sdk:DataGrid.Columns> </sdk:DataGrid> </Grid> </UserControl>
最后,在类用户控制的构造函数中设置数据源。
 
public partial class MainPage : UserControl { ObservableCollection<Employee> Employs = null; public MainPage() { InitializeComponent(); this.Employs = new ObservableCollection<Employee>(); Employs.Add(new Employee { Name = "李小同", Age = 27, Birthday = new DateTime(1988, 12, 10) }); Employs.Add(new Employee { Name = "南郭先生", Age = 43, Birthday = new DateTime(1976, 3, 12) }); Employs.Add(new Employee { Name = "汤老头", Age = 36, Birthday = new DateTime(1978, 5, 1) }); Employs.Add(new Employee { Name = "林大吉", Age = 28, Birthday = new DateTime(1987, 6, 21) }); //绑定 this.Grid.ItemsSource = Employs; } }
好了,请申出你的手指头,轻轻地按一下F5,把程序Run起来。
我们在年龄上选一条记录,进入编辑状态后,输入字母(应为整数),然后试着确认,看看发生了什么事?
 

在日期处也试试。

转载地址:http://urmtx.baihongyu.com/

你可能感兴趣的文章
DOS常用命令详解
查看>>
监控haproxy的脚本
查看>>
单用户模式迁移home家目录
查看>>
Css常用操作——————分类
查看>>
Wrong permissions on configuration file, should not be world writable
查看>>
rabbitmq3.5.1 原理和集群安装
查看>>
linux中的rm 删除命令
查看>>
多功能PCIE交换机之三:PCIE非透明桥 cache一致性
查看>>
依赖属性之“风云再起”三
查看>>
9.1 正则介绍_grep(上);9.2 grep(中);9.3 grep(下)
查看>>
启动oracle em命令
查看>>
jquery option 动态 selected
查看>>
搭建简易堡垒机
查看>>
鸟哥的linux私房菜-文件压缩于打包-2
查看>>
coreutils-5.0中几个命令的执行过程
查看>>
F5 bigip.conf配置问题
查看>>
zabbix对一台主机监控的操作
查看>>
Yum在线升级之网络(本地)服务器的搭建!
查看>>
[毕业生的商业软件开发之路]尽早暴露错误原则
查看>>
建高性能ASP.NET站点 第五章—性能调优综述(中篇)
查看>>