繁体   English   中英

取消WPF TextBox已更改事件

[英]Cancelling a WPF TextBox Changed Event

我正在学习来自WinForms开发的WPF。

我有一个TextChanged事件分配给我的WPF应用程序中的一个TextBox。 如果用户输入无效数据,我希望能够恢复到以前的文本值。

在旧的表单日,我会用OldValue替换NewValue,但似乎WPF的工作方式不同。

关于我能做到什么的任何想法都实现了这个目标? 我只是不想用WPF吗?

谢谢。

你可以这两种方式:

  1. 收听PreviewTextInput事件并设置e.Handled = true以停止TextChanged事件。

  2. 使用WPF验证。 Paul Stovell在Codeproject上发表了一篇很棒的文章,在他的博客上发表了一篇帖子

这些文章将帮助您入门。 我第一次验证时遇到的一件事就是验证规则仅在绑定更新源时运行。

我会使用PreviewTextInput,WPF中的大多数事件都有预览兄弟。 如果设置e.Handled = true,它将进一步阻止bubbelig / tunneling事件。

我不确定你是否意识到这一点,但预测事件据说是隧道,即。 它们从最外面的容器开始,并在每个容器中发布,直到它到达具有焦点的控件。 据说非预览事件是冒泡的,即。 它们以焦点从控件开始,并发布到每个父控件。

如果在最外层网格的PreviewTextChanged事件上设置e.Handled = true,则还会取消包括TextChanged在内的所有其他事件。 首先,所有预览事件都会从最外层触发到具有焦点的控件,然后所有非预览事件都从具有焦点的控件触发并向最外面的父控件触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM