将文本框设置为";“什么都没有”;在WPF中,但MV值未更新

将文本框设置为";“什么都没有”;在WPF中,但MV值未更新,wpf,textbox,Wpf,Textbox,我有一个用户界面,用户可以在其中输入一个值,该值在ViewModel中更新(并最终写回数据库) 如果实际输入了a值,则此操作正常。但是,如果要清除该值(即,将其设置为nothing),它似乎不起作用 例如,如果它是“dog”,但我清除了文本并“save”,则无法识别更改 我调用“PropertyChanged”,如果输入值,它将被激发。但是如果文本被清除,并且我在文本框中按enter或tab键,则属性不会更新 有没有什么特别的方法来处理这个问题,或者我只是错过了什么 谢谢它应该能用 您确定其他层

我有一个用户界面,用户可以在其中输入一个值,该值在ViewModel中更新(并最终写回数据库)

如果实际输入了a值,则此操作正常。但是,如果要清除该值(即,将其设置为nothing),它似乎不起作用

例如,如果它是“dog”,但我清除了文本并“save”,则无法识别更改

我调用“PropertyChanged”,如果输入值,它将被激发。但是如果文本被清除,并且我在文本框中按enter或tab键,则属性不会更新

有没有什么特别的方法来处理这个问题,或者我只是错过了什么

谢谢

它应该能用

您确定其他层(尤其是DB)接受“空”值吗?它可能是一个转换异常或被静默吃掉的错误


要进行诊断,请使用不同类型的不同属性进行实验

如上面评论中的Veer所示,请尝试使用UpdateSourceTrigger,如下所示,在更改文本时进行检测。在视图模型中设置断点,并查看在文本框中键入时是否捕获更改事件

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

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

清除文本并失去焦点后是否检查了数据库?您是否已将任何UpdateSourceTrigger设置为您的文本框或默认值?如果已将其设置为PropertyChanged,则每当文本更改时,它都会激发。如果清除文本框,则PropertyChanged将被触发,而当您失去焦点时,它将不会被触发,因为该属性是相同的。但是,如果数据库本身没有更新,那么应该还有其他一些问题。我也有同样的困难-使用基本字符串-没有数据库只是评估viewmodel。当我通过按钮命令将viewmodel属性设置为空白时,我的验证也不再生效