码迷,mamicode.com
首页 > Windows程序 > 详细

WPF-Binding对数据的检验

时间:2017-03-27 13:32:59      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:image   xaml   send   dev   fonts   class   out   ring   eval   

设置Binding的ValidationRules属性对Binding进行检验

<StackPanel>
<TextBox x:Name="txtAge" FontSize="30" Foreground="Red"></TextBox>
<TextBlock x:Name="errorSummary" FontSize="30" Foreground="Red"></TextBlock>
</StackPanel>

后台代码

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();
// You can do everything here when validation error occurs
}
}
}
}

技术分享

同样,我们在XAML里也可以设置验证

<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>

后台代码:

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
}
}
}

 

WPF-Binding对数据的检验

标签:image   xaml   send   dev   fonts   class   out   ring   eval   

原文地址:http://www.cnblogs.com/sjqq/p/6626071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!