gpt4 book ai didi

c# - 失去焦点时的 WPF RaisePropertyChanged 事件

转载 作者:太空狗 更新时间:2023-10-29 20:50:19 25 4
gpt4 key购买 nike

我有一个运行良好的 C# WPF MVVM 应用程序。

唯一的问题是当我修改文本框并单击菜单时。如果我在不单击另一个控件的情况下执行此操作,则永远不会触发 view->viewmodel 事件,因为文本框没有失去焦点。如果我错了请纠正我,但我认为 RaisePropertyChanged 仅在 LostFocus(或 OnBlur,或任何类似事件)上触发。

因此,在编辑文本框后立即单击菜单保存按钮会导致 View 模型使用旧值保存数据。

所以,继续:

这个序列工作正常:

  1. 编辑文本框
  2. 点击另一个控件
  3. 触发 RaisePropertyChanged,更新 View 模型
  4. 点击菜单上的保存按钮
  5. 使用正确值保存的数据

这个序列给我一个错误:

  1. 编辑文本框
  2. 点击菜单上的保存按钮
  3. 使用正确值保存的数据

如何解决?

最佳答案

这是 WPF 和 WinForms 中文本框的常见问题。您可以通过指示绑定(bind)系统在每次对 TextBox 进行更改而不是在它失去焦点时更新 VM 来解决此问题。为此,将绑定(bind)的 UpdateSourceTrigger 设置为 PropertyChanged。每当 TextBox 为其 Text 属性引发 PropertyChanged 事件时,这将写回 VM。

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

关于c# - 失去焦点时的 WPF RaisePropertyChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com