我有一个C#WPF MVVM应用程序,工作正常.
唯一的问题是当我修改文本框并单击菜单时.如果我这样做而不点击另一个控件,则视频 - > viewmodel事件永远不会被触发,因为文本框没有失去焦点.如果我错了,请纠正我,但我认为RaisePropertyChanged仅在LostFocus(或OnBlur或任何类似事件)上触发.
因此,在编辑文本框后立即单击菜单保存按钮会导致视图模型使用旧值保存数据.
所以,恢复:
这个序列工作正常:
这个序列给了我一个错误:
怎么解决这个?
Mic*_*ter 11
这是WPF和WinForms中TextBoxes的常见问题.您可以通过指示绑定系统在每次更改TextBox而不是失去焦点时更新VM来解决此问题.为此,请将UpdateSourceTrigger
绑定设置为PropertyChanged
.PropertyChanged
只要TextBox 为其Text
属性引发事件,这将写回VM .
<TextBox Text="{Binding MyText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)
对于TextBox.Text
依赖项属性,其默认UpdateSourceTrigger
值为LostFocus
(即,当控件失去焦点时,您的视图模型属性会更新).要在输入文本时立即更新属性,请进行设置UpdateSourceTrigger=PropertyChanged
.(有关详细信息,请参阅上面的链接 - 它实际上专门涵盖了您的示例.)
归档时间: |
|
查看次数: |
8468 次 |
最近记录: |