【WPF】验证


 <Window.Resources>
<!--数据源-->
<local:Person Age="100" Name="Tom" x:Key="Data"></local:Person>
<!--TextBox模板-->
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<!--验证触发-->
<Trigger Property="Validation.HasError" Value="True">
<!--错误信息模板-->
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<Border Background="Red" DockPanel.Dock="Right" Margin="5,0,0,0"
Width="20" Height="20" CornerRadius="20"
ToolTip="{Binding ElementName=customAdorner,Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
<TextBlock Text="*" VerticalAlignment="Center" HorizontalAlignment="Center"
FontWeight="Bold" Foreground="White"/>
</Border>
<!--占位,表示修饰控件相对于ControlTemplate中其它元素所放置的位置(这个示例中用于文本框的占位)-->
<AdornedElementPlaceholder Name="customAdorner" VerticalAlignment="Center">
<Border BorderBrush="Red" BorderThickness="1"></Border>
</AdornedElementPlaceholder>
</DockPanel>

</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<TextBox Height="35" Width="120"
Text="{Binding Source={StaticResource Data},Path=Age,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True,ValidatesOnExceptions=True,
NotifyOnValidationError=True}" />
</Grid>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;

namespace WpfCommand.Models
{
public class Person:INotifyPropertyChanged,IDataErrorInfo
{

private string _name;
public string Name
{
get { return _name; }
set {
_name = value;
RaisePropertyChanged("Name");
}
}
private int _age;
   // [Range]  ValidationAttribute:(需要添加 System.ComponentModel.DataAnnotations.dll)
       
[Range(19,99,ErrorMessage="未成年")]

public int Age
{
get { return _age; }
set {
_age = value;
RaisePropertyChanged("Age");
}
}

public string Error { get { return ""; } }

//索引器
public string this[string ColumnName]
{
get {
var vc = new ValidationContext(this, null, null);
vc.MemberName = ColumnName;
var res = new List<ValidationResult>();
var result = Validator.TryValidateProperty(this.GetType().GetProperty(ColumnName).GetValue(this, null), vc, res);
if (res.Count > 0)
{
return string.Join(Environment.NewLine,res.Select(r=>r.ErrorMessage).ToArray());
}
return string.Empty;
}

}

public event PropertyChangedEventHandler PropertyChanged;

public virtual void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

}
}
}

【WPF】验证,码迷,mamicode.com

时间: 2024-10-01 05:13:01

【WPF】验证的相关文章

WPF 验证没有通过无法保存数据(非常好)+ 虚似数据库

Validation control with a single validation rule is easy, but what if we need to validate a control using different validation rules. This article tells how to achieve multiple validation on single control in an easy and systematic way. Download sour

[Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]

我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: Virtualizing虚拟化DEMO 和 大数据加载的思路及相关知识 WPF数据提供者的使用ObjectDataProvider 和 XmlDataProvider WPF验证 第一:使用自带的属性SET抛出异常,前台捕捉到异常,描红 第二:我们可以自定义验证规则,替代刚开始的异常捕捉验证 第三:我们可以使用INotifyDataErrorInfo方式,增加异常,并实现了验证通知和还原非法值 第四:我们使用了Er

WPF知识点全攻略07- 数据绑定(Binding)

数据绑定是WPF不得不提,不得不会系列之一 数据绑定简言之,就是把数据源的数据绑定到目标对象的属性上.目标对象可以是承自DependencyProperty的任何可访问的属性或控件,目标属性必须为依赖属性(下节讲),数据源可以是其他控件的属性,可以是对象实例.XAML 元素.ADO.NET Dataset.XML数据. 数据绑定的重点属性- Mode属性: MSDN给出如下图标记了三种你来我往的数据流向.比较简单,看图就能明白. 数据绑定的重点属性- UpdateSourceTrigger属性:

关于WPF的验证

1.ValidationRule 验证 ValidationRule:是通过ValidationRule中的的Validate方法来验证我们绑定的属性.所以我们的用法是继承ValidationRule,重写他的Validate方法.示例 public class RequiredRule : ValidationRule { public override ValidationResult Validate(object value, CultureInfo cultureInfo) { if

【WPF】数据验证

引言      数据验证在任何用户界面程序中都是不可缺少的一部分.在WPF中,数据验证更是和绑定紧紧联系在一起,下面简单介绍MVVM模式下常用的几种验证方式. 错误信息显示 在介绍数据验证之前,有必要介绍一下如何显示错误信息.方式很简单,定义一个样式触发器,将错误信息和 ToolTip绑定,如下: <Style TargetType="TextBox"> <Style.Triggers> <Trigger Property="Validation

wpf表单验证

在做表单的,需要对User提交数据做验证,wpf与silverlight 都提供自带的验证机制,但是只是验证,并不能在提交时提供详细的信息,此时可使用 依赖属性将错误信息整合进自定义错误集合中,即可在提交时获取相应错误信息方便后续业务处理. Silverlifgt版本: public class ValidationScope { public FrameworkElement ScopeElement { get; private set; } private readonly Observa

wpf TextBox 验证

以下内容适合像我一样的新手!有什么好的建议!还望大家指点! 效果图如下: 第一步:先 新建文件夹 CheckValueLibrary  在新建一个类 PhoneNumberCheck 用于验证 此类继承 ValidationRule 类! PhoneNumberCheck  类代码如下(正则表达式有错,可借鉴方法): <span style="font-size:14px;">namespace Demo1.CheckValueLibrary { // public cla

WPF数据验证

当填写表单时,需要对填写的内容进行验证,检查数据是否符合要求,比如字符串的长度.日期的格式.数字等.WPF支持自定义验证规则,并提供可视化反馈,以便在输入无效值时向用户发出通知. 下面的示例将演示一个模拟员工信息录入的过程,员工的年龄为大于18的整数,工资为大于2500的数字,如果输入错误,将在文本框的后面显示一个红色的叹号,当鼠标移至错误文本框时,显示提示消息,提示用户正确的输入格式.   数据的验证 可以继承ValidationRule类,重写Validate方法,实现自定义的验证规则 下面

WPF/Silverlight 页面绑定Model验证机制升级版

关于WPF/Silverlight的数据验证,想必大家都不陌生了. 各大牛的博客里都不泛对这方面讨论的文章. 个人比较赞赏 JV9的“Silverlight实例教程”里的Validation数据验证. 本文是在大牛基础上做了个升级,其验证更加简单和方便. 1.创建验证的基类 public class ValidationBase:IDataErrorInfo,INotifyPropertyChanged { protected string errMsg; private bool hasVal