输入按不会引发属性更改事件wpf

Jam*_*mes 2 c# wpf mvvm

在我看来,有一个TextBox和一个Button,TextBox的Text属性绑定到ViewModel中的公共属性,当用户单击该按钮时,获取TextBox中的文本.我还将Button的IsDefault属性设置为true,这样我就可以按Enter来触发click事件.我的项目使用MVVM,因此按钮的命令也在ViewModel中.现在,问题是,我点击按钮,我可以在TextBox中获取文本,但如果我按下回车键,我无法获取文本,它总是为空.我设置断点并发现,如果我在文本框中输入一些文本并单击按钮,则会触发RaisePropertyChanged事件,但如果我按下按钮,则不会.任何人都可以帮忙吗?

谢谢!

Mik*_*ray 5

默认情况下,TextBox仅更新Text焦点丢失时绑定的属性.您有两个选项,可以引发焦点更改(这可能会让用户烦恼)或更改此行为.

要更改行为,UpdateSourceTrigger请将TextBox绑定的属性修改为PropertyChanged:

<TextBox Text={Binding Path=MyTextProperty, UpdateSourceTrigger=PropertyChanged}/>
Run Code Online (Sandbox Code Playgroud)

根据您在每次房产变更方面的工作量,这可能适用于您,也可能不适用.在某些情况下,它可能会显着降低性能.如果是这种情况,我建议重新处理您的视图模型代码,以便在属性更改时执行更少的工作.