设置Binding的ValidationRules属性对Binding进行检验
1
2
3
|
< StackPanel >
< TextBox x:Name="txtAge" FontSize="30" Foreground="Red"></ TextBox >
< TextBlock x:Name="errorSummary" FontSize="30" Foreground="Red"></ TextBlock >
|
1
|
</ StackPanel >
|
后台代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Person p = new Person { Age = 20, Name = "Tom" };
Binding binding = new Binding( "Age" ) { Source = p };
binding.NotifyOnValidationError = true ;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
RangeValidationRule rv = new RangeValidationRule();
binding.ValidationRules.Add(rv);
this .txtAge.SetBinding(TextBox.TextProperty, binding);
this .txtAge.AddHandler(Validation.ErrorEvent, new RoutedEventHandler( this .ValidationError));
}
void ValidationError( object sender, RoutedEventArgs e)
{
if (Validation.GetErrors( this .txtAge).Count > 0)
{
this .txtAge.ToolTip = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
this .errorSummary.Text = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
|
1
2
3
4
5
6
|
// You can do everything here when validation error occurs
}
}
}
} |
同样,我们在XAML里也可以设置验证
1
2
3
4
5
6
7
8
9
10
|
< StackPanel >
< TextBox x:Name="txtAge" FontSize="30" Foreground="Red" Validation.Error="txtAge_Error">
< Binding NotifyOnValidationError="True" Path="Age" UpdateSourceTrigger="PropertyChanged">
< Binding.ValidationRules >
< local:RangeValidationRule ></ local:RangeValidationRule >
</ Binding.ValidationRules >
</ Binding >
</ TextBox >
< TextBlock x:Name="errorSummary" FontSize="30" Foreground="Red"></ TextBlock >
</ StackPanel >
|
后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Person p = new Person { Age = 20, Name = "Tom" };
this .DataContext = p;
}
private void txtAge_Error( object sender, ValidationErrorEventArgs e)
{
if (Validation.GetErrors( this .txtAge).Count > 0)
{
this .txtAge.ToolTip = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
this .errorSummary.Text = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
// You can do everything here when validation error occurs
}
}
} |
王德水