如何在WPF上使用IDataErrorInfo的异常消息

时间:2015-05-04 18:08:44

标签: c# wpf mvvm idataerrorinfo

我想知道如何最好地验证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()}
}

但似乎没有可行的例外情况。

1 个答案:

答案 0 :(得分:0)

不要在ViewModel属性中捕获任何异常:

    public string Name
    {
        get
        {
            return myBl.Name;
        }
        set
        {
            myBl.Name = value;
        }
    }

并检查数据绑定对话框中的ValidateOnExceptions选项(或XAML代码中的ValidatesOnExceptions=True)。