繁体   English   中英

单击禁用按钮后,如何防止 TextBox 或 RichEditBox 失去焦点?

[英]How do I prevent TextBox or RichEditBox from losing focus after clicking on a disabled button?

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

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

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

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

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

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

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

将禁用的按钮包装在边框或网格中。

<Grid Tapped="DisabledButtonTapped">
    <Button IsEnabled="false"/>
</Grid>

现在借助此网格上的点击方法,您可以将焦点设置回您的 RichEditBox。

private void DisabledButtonTapped(object sender, object args)
{
    MyRichEditBox.Focus(FocusState.Programmatic);.//use the x:Name of your richeditbox in place of "MyRichEditBox".
}

暂无
暂无

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

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