如何在 WPF 上使用 IDataErrorInfo 的异常消息
How to use Exception Messages for IDataErrorInfo on WPF
我想知道如何最好地验证 WPF mvvm 模式上的某些用户输入?我在我的 ViewModel 中实现了 IDataErrorInfo。但是我不知道如何使用这个接口来引发异常。我的目的是在我的 viewModel 中没有任何逻辑。所以验证必须在业务逻辑中 class.
边界字段是我的 ViewModel 中的 属性 "Name"。这是
ValidatesOnDataErrors=True
我的视图模型中的 属性 如下所示:
//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 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()}
}
但这似乎不是例外的可行方法。
不要在 ViewModel 属性中捕获任何异常:
public string Name
{
get
{
return myBl.Name;
}
set
{
myBl.Name = value;
}
}
并检查数据绑定对话框中的 ValidateOnExceptions 选项(或 XAML 代码中的 ValidatesOnExceptions=True
)。
我想知道如何最好地验证 WPF mvvm 模式上的某些用户输入?我在我的 ViewModel 中实现了 IDataErrorInfo。但是我不知道如何使用这个接口来引发异常。我的目的是在我的 viewModel 中没有任何逻辑。所以验证必须在业务逻辑中 class.
边界字段是我的 ViewModel 中的 属性 "Name"。这是
ValidatesOnDataErrors=True
我的视图模型中的 属性 如下所示:
//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 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()}
}
但这似乎不是例外的可行方法。
不要在 ViewModel 属性中捕获任何异常:
public string Name
{
get
{
return myBl.Name;
}
set
{
myBl.Name = value;
}
}
并检查数据绑定对话框中的 ValidateOnExceptions 选项(或 XAML 代码中的 ValidatesOnExceptions=True
)。