我有一个绑定到我的模型的TextBox
(我意识到这应该在VM中,但这是目前的方式)。我有ValidatesOnExcepion=true
,但是当我的属性setter验证并抛出异常时,我的模型和视图不同步(模型仍然是旧的,视图变成新的)。我甚至尝试包装在一个try...finally
,最后调用OnPropertyChanged
。我如何保持视图和模型设置为旧值?
public Object MyProperty
{
get{return _myProperty;}
set
{
ThrowIfNotValid();
_myProperty = value;
OnPropertyChanged("MyProperty");
}
}
updatesourcetrigger可以工作,
<TextBox Text={Binding YourModel.PropertyName, UpdateSourceTrigger=PropertyChanged}" />
这是一篇详细阐述这种痛苦的博客文章,但我最终给出了一个混合的答案。
我正在使用上面的答案,但随后不得不创建一个类似于INotifyPropertyChanged
的界面来通知用户,因为上面的答案消除了任何验证错误