XAML
<
Window
x:Class
="WpfApplication1.Window1"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
Title ="Window1" Height ="192" Width ="537"
xmlns:local ="clr-namespace:WpfApplication1" >
< Window.Resources >
<!-- 判断规则 -->
< local:NumberRangeRule x:Key ="numberRangeRule" ></ local:NumberRangeRule >
</ Window.Resources >
< Grid Name ="grid" ClipToBounds ="False" Height ="129" Width ="297" >
< Label HorizontalAlignment ="Left" Margin ="25,53,0,0" Name ="label2" Width ="49" Height ="28" VerticalAlignment ="Top" > 年龄: </ Label >
<!-- 绑定 Error Content 到ToolTip -->
< TextBox Margin ="94,50,0,56" ToolTip =" {Binding RelativeSource={RelativeSource self}, Path=(Validation.Errors)[0].ErrorContent} "
Name ="txtAge" HorizontalAlignment ="Left" Width ="101" >
< TextBox.Text >
<!-- 绑定Age数据 和 判断规则 并设置最大最小值 -->
< Binding Path ="Age" UpdateSourceTrigger ="PropertyChanged" >
< Binding.ValidationRules >
< local:NumberRangeRule Min ="0" Max ="128" />
</ Binding.ValidationRules >
</ Binding >
</ TextBox.Text >
</ TextBox >
</ Grid >
</ Window >
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
Title ="Window1" Height ="192" Width ="537"
xmlns:local ="clr-namespace:WpfApplication1" >
< Window.Resources >
<!-- 判断规则 -->
< local:NumberRangeRule x:Key ="numberRangeRule" ></ local:NumberRangeRule >
</ Window.Resources >
< Grid Name ="grid" ClipToBounds ="False" Height ="129" Width ="297" >
< Label HorizontalAlignment ="Left" Margin ="25,53,0,0" Name ="label2" Width ="49" Height ="28" VerticalAlignment ="Top" > 年龄: </ Label >
<!-- 绑定 Error Content 到ToolTip -->
< TextBox Margin ="94,50,0,56" ToolTip =" {Binding RelativeSource={RelativeSource self}, Path=(Validation.Errors)[0].ErrorContent} "
Name ="txtAge" HorizontalAlignment ="Left" Width ="101" >
< TextBox.Text >
<!-- 绑定Age数据 和 判断规则 并设置最大最小值 -->
< Binding Path ="Age" UpdateSourceTrigger ="PropertyChanged" >
< Binding.ValidationRules >
< local:NumberRangeRule Min ="0" Max ="128" />
</ Binding.ValidationRules >
</ Binding >
</ TextBox.Text >
</ TextBox >
</ Grid >
</ Window >
C#
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Person person;
public Window1()
{
InitializeComponent();
// 创建示例数据并绑定
person = new Person();
person.Name = " kill " ;
person.Age = 21 ;
this .txtAge.DataContext = person;
}
}
// 数据类要继承INotifyPropertyChanged
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
string name;
public string Name
{
get { return name; }
set { name = value; }
}
int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Person() { }
}
// 书写继承ValidationRule的判断规则类
// 重写Validate方法完成自己的判断
public class NumberRangeRule : ValidationRule
{
int min;
public int Min
{
get { return min; }
set { min = value; }
}
int max;
public int Max
{
get { return max; }
set { max = value; }
}
public override ValidationResult Validate( object value, System.Globalization.CultureInfo cultureInfo)
{
int number;
if ( ! int .TryParse(( string )value, out number))
{
return new ValidationResult( false , " Invalid number format " );
}
if (number < min || number > max)
{
return new ValidationResult( false , string .Format( " Number out of range ({0} - {1}) " , min, max));
}
return ValidationResult.ValidResult;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace WpfApplication1
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Person person;
public Window1()
{
InitializeComponent();
// 创建示例数据并绑定
person = new Person();
person.Name = " kill " ;
person.Age = 21 ;
this .txtAge.DataContext = person;
}
}
// 数据类要继承INotifyPropertyChanged
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
string name;
public string Name
{
get { return name; }
set { name = value; }
}
int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Person() { }
}
// 书写继承ValidationRule的判断规则类
// 重写Validate方法完成自己的判断
public class NumberRangeRule : ValidationRule
{
int min;
public int Min
{
get { return min; }
set { min = value; }
}
int max;
public int Max
{
get { return max; }
set { max = value; }
}
public override ValidationResult Validate( object value, System.Globalization.CultureInfo cultureInfo)
{
int number;
if ( ! int .TryParse(( string )value, out number))
{
return new ValidationResult( false , " Invalid number format " );
}
if (number < min || number > max)
{
return new ValidationResult( false , string .Format( " Number out of range ({0} - {1}) " , min, max));
}
return ValidationResult.ValidResult;
}
}
}