【发布时间】:2019-03-04 00:03:05
【问题描述】:
我了解在XAML 中设置事件时如何绑定和处理验证错误,如下所示,我现在需要做的是添加相同的错误处理程序,但完全在没有XAML 的代码中添加控件在代码运行时。我已经搜索过,但找不到任何指向正确方向的东西。
<Grid>
<TextBox Validation.Error="TextBox_Error" />
</Grid>
【问题讨论】:
我了解在XAML 中设置事件时如何绑定和处理验证错误,如下所示,我现在需要做的是添加相同的错误处理程序,但完全在没有XAML 的代码中添加控件在代码运行时。我已经搜索过,但找不到任何指向正确方向的东西。
<Grid>
<TextBox Validation.Error="TextBox_Error" />
</Grid>
【问题讨论】:
如果你没看错,这就是你要找的东西:
var element = yourRunTimeControl as DependencyObject;
System.Windows.Controls.Validation.AddErrorHandler(element, ErrorHandler)
private void ErrorHandler(object sender, System.Windows.Controls.ValidationErrorEventArgs e)
{
...
}
你可以阅读更多关于Validation.Error附加事件here。
【讨论】:
您还可以为控件设置 Binding 并为绑定添加 ValidationRules
TextBox txtBox = new TextBox();
txtBox.DataContext = // Your data;
Binding binding = new Binding();
binding.Path = // Set path;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
binding.ValidatesOnDataErrors = true;
binding.NotifyOnValidationError = true;
binding.ValidationRules.Add(// Your ValidationRule class);
txtBox.SetBinding(TextBox.TextProperty, binding);
【讨论】: