c# - 单击禁用按钮后,如何防止 TextBox 或 RichEditBox 失去焦点?
问题描述
标题说明了一切:“如何防止 TextBox 或 RichEditBox 在单击禁用按钮后失去焦点?”
我尝试将 AllowFocusOnInteraction 设置为 false,但这仅在启用按钮时有效。例如,如果我有一个用于将文本设置为粗体或斜体的按钮,该属性就可以正常工作。编辑器不会失去焦点,一切都很棒。但是如果我禁用那个按钮然后点击它,编辑器就会失去焦点。这给我带来了几个新问题。希望对此有所帮助。谢谢。
另请注意,我有一个 UWP 应用程序。不过,不确定这是否重要。
解决方案
好的,所以我想出了解决问题的正确方法。所以粗体、斜体和下划线格式按钮都在我的自定义工具栏中。我必须记住的是,大多数 xaml 元素都可以被点击并因此触发 PointerPressed 事件,只要元素(例如 Grid 元素)具有点击拦截的背景。如果背景是透明的,PointerPressed 事件将不会触发。
Sooo,我确保我的工具栏有一个坚实的背景设置,然后我在它上面设置了一个 PointerPressed 事件。因此,每当您单击工具栏时,该事件就会触发,我只需将该e.Handled
属性设置为 true;
所以现在因为工具栏中的按钮被禁用,指针单击将转到您单击的按钮下方的可视树中的下一个可单击元素,这是我的工具栏(现在有背景)。当到达工具栏时,在e.Handled
事件处理程序中设置为 true 的事件将告诉系统不再做任何事情,因此 RichEditBox 保持其焦点。
我知道我在这里的写作非常草率,但我现在有点着急,所以我很可能会回来清理我的答案。希望这可以帮助某人。
推荐阅读
- jasper-reports - Jaspersoft Reports,如何在 IF-ELSE 子句中检查文件是否存在?
- c# - 冒泡排序二维字符串数组
- java - 请求收到 MultipartFile 时的 MultipartException 和 IOFileUploadException
- mxnet - mxnet 模型转换为 onnx 成功但 ort.InferenceSession(model) 失败
- git - 提取自某个日期以来在 repo 中更改的所有文件
- java - 安排每 x 毫秒运行一次的任务
- android - 更改Android通知颜色的正确方法是什么?
- azure - Azure Cosmos DB - 对运行状况检查项目使用非常低的 TTL 有什么缺点吗?
- python - 如果条件与数据框
- swift - 使 struct init() 参数接受两种类型?