簡體   English   中英

如何使WinRT / UWP RichEditBox中突出顯示的文本失去焦點?

[英]How to keep highlighted text in WinRT/UWP RichEditBox on focus lost?

我正在使用RichEditBox並且正在實現一些選項,以允許用戶使用某些格式編輯文本。

問題是,每次控件失去焦點時 ,高亮選擇都會被隱藏,即使該選擇保持活動狀態 ,我也可以對其進行實際操作。

這是我正在使用的Template ,如您所見,我已經刪除了所有VisualState但是並不能解決問題。

<Style TargetType="RichEditBox" x:Key="CustomRtfEditBoxStyle">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="RichEditBox">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Disabled" />
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="PointerOver" />
                            <VisualState x:Name="Focused" />
                            <VisualState x:Name="UnFocused" />
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                ...

現在,我想這不是問題,選擇是在控件的內部代碼中進行的。

注意:當丟失和獲得焦點時,我無法真正使用變通方法來手動設置選擇背景色,因為文本將作為富文本導出/加載,並且不會弄亂用戶設置。 我需要一種無需實際更改格式文本即可執行此操作的方法。

我注意到RichEditBox類不是sealed ,所以我想知道是否有可能重寫某些行為或采取某些措施來解決此問題,但我不知道從哪里開始。 我知道在WPF上還有其他解決方法可以解決此問題(例如方便使用的屬性,可以在焦點丟失時僅保留突出顯示),但是UWP上不存在。

您對如何執行此操作有任何想法嗎? 謝謝!

事實證明,沒有簡單/內置的方法可以完成此操作,因此我使用了以下解決方法:

EditBox.PreventKeyboardDisplayOnProgrammaticFocus = true;
EditBox.Focus(FocusState.Programmatic);

設置PreventKeyboardDisplayOnProgrammaticFocus屬性后調用Focus方法會使文本再次突出顯示,而無需再次顯示虛擬鍵盤。

此方法使突出顯示顏色“閃爍”一秒鍾(在控件失去焦點之后,直到再次獲得焦點為止,具體取決於調用Focus方法的速度),但這並不是很煩人,並且可以解決此問題。目前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM