我在wpf-mvvm模型中工作。
我有一个文本框,其中包含“marketName”。在xaml中,我将属性 - “newmarketname”(在我的viewmodel中定义)绑定到此文本框。一旦用户在该文本框中输入新的市场名称,就会调用“newmarketname”的“set”方法。
在“newmarketname”的set方法中,我调用了PropertyChanged事件。
属性更改处理程序将调用一个函数,我在其中检查市场名称是否已存在;如果“是”,我将string.Empty分配给属性“newmarketname”。 因此,再次调用“newmarketname”的set方法,然后调用PropertyChanged事件。
但问题是:即使“newmarketname”的值变为空,但它没有反映在UI中。
问题是什么?
答案 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}" />