如何在 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)。