您知道如何使用INotifyDataErrorInfo验证WPF 4.5中的异常吗
本文关键字:异常 WPF 验证 何使用 INotifyDataErrorInfo | 更新日期: 2023-09-27 18:29:58
我的疑问很简单,如何在WPF 4.5中使用此INotifyDataErrorInfo显示异常?
我正在使用MVVM:
这是我对的看法
<TextBox MinHeight="50"
Text="{Binding Person.Name, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True}"
这是我的模特课。检查Validate方法,在该方法中我设置了@character,应该抛出一个异常
public class Person : DomainObject
{
private string _name;
public string Name
{
get
{
return this._name;
}
set
{
if (this._name != value)
{
this.ValidateProperty("Name", value);
this._name = value;
this.RaisePropertyChanged("Name");
}
}
}
}
protected override void ValidateProperty(string propertyName, object value)
{
if (propertyName == "Name")
{
var errors = new List<string>();
var response = value as string;
if (string.IsNullOrEmpty(response))
{
errors.Add("The value cannot be null or empty");
}
else if (response == "@")
{
throw new Exception("@");
}
this.ErrorsContainer.SetErrors(propertyName, errors);
}
else
{
base.ValidateProperty(propertyName, value);
}
}
当这种情况发生时,它真的会停止程序。。据我所知,在Silverlight中不会发生这种情况。
除了绑定之外,您可能还在其他地方使用您的setter(并且您不会捕获异常)。
您需要在调试模式下运行应用程序。当异常发生时,Visual Studio将向您显示异常助手。
然后,您将能够分析堆栈跟踪,并查看您的程序如何调用此代码。
如果它不能解决您的问题,请使用导致程序停止的异常(Visual studio称之为"未处理的异常")的堆栈跟踪来更新您的问题。