2010-06-22 37 views
2

我有一个用户界面,用户可以输入一个值并在ViewModel中更新该值(并最终写回数据库)。在WPF中将文本框设置为“无”,但MV值未更新

如果实际输入了一个值,这可以正常工作。但是,如果你想清除该值(即将其设置为无),它似乎不起作用。

因此,例如,如果它是'狗',但我清楚,文本和“保存”的变化无法识别。

我打电话给“PropertyChanged”,如果输入一个值就会触发它。但是,如果文本被清除,并且我输入或者跳出文本框,则属性不会被更新。

是否有一些特殊的方式来处理这个问题还是我只是想念一些东西?

感谢

+0

numeric,string,datetime? – 2010-06-22 22:20:41

+1

您是否清除了文本并丢失了重点后才检查数据库?你有没有设置任何UpdateSourceTrigger到你的文本框,或者它是默认的?如果您将其设置为PropertyChanged,则只要您的文字发生更改就会触发。你清除文本框,PropertyChanged将被解雇,当你失去焦点时,它不会因为属性相同。但是,如果数据库本身没有更新,那么应该有一些其他问题。 – Amsakanna 2010-06-23 04:58:46

+0

我有同样的困难 - 基本字符串 - 没有数据库只是评估视图模型。当我通过按钮命令将viewmodel属性设置为空白时,我的验证不再生效 – barrypicker 2015-12-02 19:57:01

回答

1

它应该工作....

你确定你的其他层(尤其是DB)接受 '空' 值?这可能是一个转换 - 例外或错误被默默食用。

要诊断,请尝试不同类型的不同属性。

0

正如Veer在上面的评论中指出的,尝试使用UpdateSourceTrigger如下来检测您何时更改文本。在您的视图模型中设置一个断点,并在您输入文本框时查看是否捕获更改事件。

<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
0

如果数据类型是int,则属性不会更新。 将属性设置为字符串将在清除时更新属性。