0

WPF + MVVM での検証に IDataErrorInfo を使用しようとしています。実装方法に関するMSDNの記事に従いました。問題は、VM のパス スルー プロパティをどうするかということです。

例えば、

public class A : INotifyPropertyChanged, IDataErrorInfo
{
    protected string _Name;
    public string Name
    {
        get
        {
            return _Name;
        }
        set
        {
            _Name = value;
            OnPropertyChanged("Name");
        }
    }

    public string this[string propertyName]
    {
        get
        {
            string result = null;

            if (propertyName == "Name")
            {
                if (Name == "ABC")
                {
                    result = "Name cannot be ABC";
                }
            }

            return result;
        }
    }
}

public class ViewModel : INotifyPropertyChanged
{
    A a = new A();

    public string ModelName
    {
        get
        {
            return a.Name;
        }
        set
        {
            a.Name = value;
            OnNameChanged();
            OnPropertyChanged("ModelName");
        }
    }
}    

<TextBox Name="txtName" Text="{Binding Path=ModelName, ValidatesOnDataErrors=True}" />

ビュー モデルで Name プロパティを再度検証する必要がないように、ビュー モデルで何をする必要がありますか?

ありがとう

4

2 に答える 2

0

必要なのは、ViewModel を介してクラス A 全体を公開することです。

このブログ投稿 (完璧ではありませんが) は、簡単な方法を示しています: http://www.eidias.com/Blog/2012/7/2/simple-validation-in-wpf-mvvm-using-idataerrorinfo

また、このトピックでエラーを表示する方法について興味深い議論があります: MVVM pattern, IDataErrorInfo and Binding to display error?

于 2013-04-04T06:59:18.390 に答える