【问题标题】:Events and Command Binding in WPFWPF 中的事件和命令绑定
【发布时间】:2012-12-26 06:28:48
【问题描述】:

我在 WPF 中有一个文本框,并将一个命令绑定到它的 LostFocus 事件并在该命令中进行一些验证。

现在在同一个窗口上,我有一个保存按钮,其键绑定是 Ctrl + S。

如果在文本框中进行一些更改,然后按 Ctrl + S,它会执行保存命令,而不会在我的文本框上引发丢失焦点事件。

我知道这是设计使然。

但我想在保存命令之前执行那段代码,我不能在保存过程中硬编码该代码,我只想在焦点在文本框中时执行它。

【问题讨论】:

  • 您能否运行验证代码?如果是,则使其设置一个标志,如 isValidated = true。并且仅当标志设置为 true 时,在您的保存命令中运行保存代码。
  • @ryadavilli 这肯定行得通,但它看起来更像是一个黑客。有没有真正的解决方案。

标签: c# wpf events textbox commandbinding


【解决方案1】:

您需要将验证代码分解到一个单独的方法中,该方法可由 LostFocus 和 Save 命令调用。从 Save 调用 LostFocus 是实现此逻辑的不好方法。

新方法可以返回一个布尔值来指示验证是否成功。有更好的验证方法不依赖于绑定 LostFocus 命令,请查看我的博客文章Taking data binding, validation and MVVM to the next level - part 1 了解更多想法。

【讨论】:

  • 很棒的文章,很有启发性。但是有一个问题,我的文本框包含电话号码,因此包含一些基本格式。当用户在失去焦点时验证文本框时,我会执行此格式化。根据您的文章,每次用户对其进行一些更改时,我都需要更新源属性。如果我这样做了,每次更改我的构造函数都会被触发并格式化文本框中的数据。
猜你喜欢
  • 2012-06-11
  • 2014-11-06
  • 2011-06-21
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2017-12-27
  • 2016-05-07
  • 2011-09-19
相关资源
最近更新 更多