如何使用验证保持ViewModel和View同步

时间:2013-04-24 22:43:00

标签: c# wpf mvvm viewmodel dependency-properties

我有TextBox绑定到我的模型(我意识到这应该在VM中,但这是它当前的方式)。我有ValidatesOnExcepion=true,但是当我的属性设置器验证并抛出异常时,我的模型和视图不同步(模型保持旧,视图变为新的)。我甚至尝试用try...finally包裹,最后调用OnPropertyChanged。如何将View和Model设置为旧值?

public Object MyProperty
{
    get{return _myProperty;}
    set
    {
        ThrowIfNotValid();
        _myProperty = value;
        OnPropertyChanged("MyProperty");
    }
}

2 个答案:

答案 0 :(得分:0)

updatesourcetrigger可以工作,

   <TextBox Text={Binding YourModel.PropertyName, UpdateSourceTrigger=PropertyChanged}" />

答案 1 :(得分:0)

Here is a blog post详细阐述了这种痛苦,但我最终选择了this answer的混合物。

我正在使用上面的答案,但后来必须创建一个类似于INotifyPropertyChanged的界面来通知用户,因为上面的答案消除了任何验证错误