我想知道如何最好地验证WPF mvvm模式上的一些用户输入?我在我的ViewModel中实现了IDataErrorInfo。但我不知道如何使用此接口引发异常。我的目的是在我的viewModel中没有任何逻辑。所以验证必须在业务逻辑类中。
有界字段是我的ViewModel中的属性“名称”。它是
ValidatesOnDataErrors=True
我的viewmodel中的属性如下所示:
//Property in ViewModel
public string Name
{
get
{
return myBl.Name;
}
set
{
try
{
myBl.Name = value;
}
catch(InvalidCastException e)
{
Console.WriteLine(String.Format("Es ist eine Exception aufgetreten: {0}", e.Message));
}
}
}
businesslogic看起来像这样:
//BusinessLogic Class
public string Name
{
get { return name; }
set
{
if (value.Contains('1'))
throw new InvalidCastException("Cannot contain 1");
name = value;
}
}
如同提议的那样抛出异常但是如何继续前进?我希望e.Message成为ValidationErrorMessage
。
我发现的唯一例子是验证
public string this[string propertyName]
{
get
{ throw new NotImplementedException()}
}
但似乎没有可行的例外情况。
答案 0 :(得分:0)
不要在ViewModel属性中捕获任何异常:
public string Name
{
get
{
return myBl.Name;
}
set
{
myBl.Name = value;
}
}
并检查数据绑定对话框中的ValidateOnExceptions选项(或XAML代码中的ValidatesOnExceptions=True
)。