我在 WPF 中有一个文本框并将命令绑定到其 LostFocus 事件并在该命令中进行一些验证。
现在在同一个窗口上,我有一个保存按钮,其键绑定是 Ctrl + S。
如果在文本框中进行一些更改,然后按 Ctrl + S,它会执行保存命令,而不会在我的文本框中引发丢失焦点事件。
我知道这是设计使然。
但是我想在保存命令之前执行那段代码,我不能在保存过程中对该代码进行硬编码,我只想在焦点在文本框中时才执行它。
我在 WPF 中有一个文本框并将命令绑定到其 LostFocus 事件并在该命令中进行一些验证。
现在在同一个窗口上,我有一个保存按钮,其键绑定是 Ctrl + S。
如果在文本框中进行一些更改,然后按 Ctrl + S,它会执行保存命令,而不会在我的文本框中引发丢失焦点事件。
我知道这是设计使然。
但是我想在保存命令之前执行那段代码,我不能在保存过程中对该代码进行硬编码,我只想在焦点在文本框中时才执行它。
您需要将验证代码分解为一个单独的方法,该方法可由 LostFocus 和 Save 命令调用。从 Save 调用 LostFocus 是实现此逻辑的不好方法。
新方法可以返回一个布尔值来指示验证是否成功。有更好的验证方法不依赖于绑定 LostFocus 命令,请查看我的博客文章将数据绑定、验证和 MVVM 提升到新的水平 - 第 1 部分以获得更多想法。