簡體   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