簡體   English   中英

UWP RichEditBox 的段落標記未調整大小

[英]Paragraph mark of UWP RichEditBox is not resized

使用此代碼( Editor.Document.Selection.CharacterFormat.Size = 20; )我更改了Page_Loaded句柄中 UWP RichEditBox的字體大小。 當我開始輸入一些字符時,一切正常。 但是當我 select 的段落標記然后鍵入一些東西時,這個文本出現在錯誤的字體大小(10.5)。

我嘗試的是在設置字體大小之前擴大選擇范圍,但是在沒有文本的情況下似乎沒有段落標記。 但是當富編輯框為空並且我按下Shift+Right Arrow ⟶ (我通常會 select 段落標記)時,字體大小設置回 10.5。

是否有任何解決方法可以防止在任何情況下將字體大小設置回 10.5?

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBlock x:Name="FontSizeBlock" Grid.Row="0"></TextBlock>
    <RichEditBox x:Name="Editor" Grid.Row="1" SelectionChanged="HandleRichEditBox_SelectionChanged"></RichEditBox>
</Grid>


public sealed partial class MainPage : Page {
    public MainPage() {
        this.InitializeComponent();
        this.Loaded += Page_Loaded;
    }

    private void Page_Loaded(object sender, RoutedEventArgs e) {
        Editor.Document.Selection.SetRange(0, 1);
        Editor.Document.Selection.CharacterFormat.Size = 20;
    }

    private void HandleRichEditBox_SelectionChanged(object sender, RoutedEventArgs e) {
        FontSizeBlock.Text = "FontSize: " + Editor.Document.Selection.CharacterFormat.Size;
    }
}

在此處輸入圖像描述

是否有任何解決方法可以防止在任何情況下將字體大小設置回 10.5?

根據您的要求,您可以在按Shift+Right時將字體大小強制為 20。 請參考以下代碼。

private void HandleRichEditBox_SelectionChanged(object sender, RoutedEventArgs e)
{
    FontSizeBlock.Text = "FontSize: " + Editor.Document.Selection.CharacterFormat.Size;
    if (Editor.Document.Selection.CharacterFormat.Size == 10.5)
    {
        Editor.Document.Selection.SetRange(0, 1);
        Editor.Document.Selection.CharacterFormat.Size = 20;
    }
}

在進一步調查我的問題時,我注意到當RichEditBox中已經有一些文本被刪除時,我的問題不會發生。

因此,我嘗試以編程方式 append、select 並刪除Page_Loaded句柄中的字符,這種方法對我有用。

private void Page_Loaded(object sender, RoutedEventArgs e) {
    // set any character
    Editor.Document.SetText(Windows.UI.Text.TextSetOptions.None, "a");
    Editor.Document.Selection.Expand(Windows.UI.Text.TextRangeUnit.Paragraph);
    Editor.Document.Selection.CharacterFormat.Size = 20;
    Editor.Document.SetText(Windows.UI.Text.TextSetOptions.None, "");

}

暫無
暫無

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

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