首页 > 解决方案 > 单击禁用按钮后,如何防止 TextBox 或 RichEditBox 失去焦点?

问题描述

标题说明了一切:“如何防止 TextBox 或 RichEditBox 在单击禁用按钮后失去焦点?”

我尝试将 AllowFocusOnInteraction 设置为 false,但这仅在启用按钮时有效。例如,如果我有一个用于将文本设置为粗体或斜体的按钮,该属性就可以正常工作。编辑器不会失去焦点,一切都很棒。但是如果我禁用那个按钮然后点击它,编辑器就会失去焦点。这给我带来了几个新问题。希望对此有所帮助。谢谢。

另请注意,我有一个 UWP 应用程序。不过,不确定这是否重要。

标签: c#wpfxamluwp

解决方案


好的,所以我想出了解决问题的正确方法。所以粗体、斜体和下划线格式按钮都在我的自定义工具栏中。我必须记住的是,大多数 xaml 元素都可以被点击并因此触发 PointerPressed 事件,只要元素(例如 Grid 元素)具有点击拦截的背景。如果背景是透明的,PointerPressed 事件将不会触发。

Sooo,我确保我的工具栏有一个坚实的背景设置,然后我在它上面设置了一个 PointerPressed 事件。因此,每当您单击工具栏时,该事件就会触发,我只需将该e.Handled属性设置为 true;

所以现在因为工具栏中的按钮被禁用,指针单击将转到您单击的按钮下方的可视树中的下一个可单击元素,这是我的工具栏(现在有背景)。当到达工具栏时,在e.Handled事件处理程序中设置为 true 的事件将告诉系统不再做任何事情,因此 RichEditBox 保持其焦点。

我知道我在这里的写作非常草率,但我现在有点着急,所以我很可能会回来清理我的答案。希望这可以帮助某人。


推荐阅读