可以为属性更改事件的属性赋值吗?

时间:2010-07-20 13:01:03

标签: wpf mvvm uiview inotifypropertychanged

我在wpf-mvvm模型中工作。

我有一个文本框,其中包含“marketName”。在xaml中,我将属性 - “newmarketname”(在我的viewmodel中定义)绑定到此文本框。一旦用户在该文本框中输入新的市场名称,就会调用“newmarketname”的“set”方法。

在“newmarketname”的set方法中,我调用了PropertyChanged事件。

属性更改处理程序将调用一个函数,我在其中检查市场名称是否已存在;如果“是”,我将string.Empty分配给属性“newmarketname”。 因此,再次调用“newmarketname”的set方法,然后调用PropertyChanged事件。

但问题是:即使“newmarketname”的值变为空,但它没有反映在UI中。

问题是什么?

3 个答案:

答案 0 :(得分:1)

WPF将忽略在设置值时引发的PropertyChanged事件。一种解决方法是使用转换器(即使只返回原始值的转换器)并将UpdateSourceTrigger设置为LostFocus。另一种方法是将IsAsync设置为True。

这已在.NET 4.0中修复。有关详细信息,请参阅此博客条目:http://karlshifflett.wordpress.com/2009/05/27/wpf-4-0-data-binding-change-great-feature/

答案 1 :(得分:0)

您是在更改基础变量而不是属性吗?这就是我经常做的(错误的)。

答案 2 :(得分:0)

也许您可以将绑定模式设置为TwoWay,这样它将反映UI和后面代码的变化

<TextBlock Text="{Binding newmarketname, Mode=TwoWay}" />