RichEditBox не работает должным образом на Dark Theme - PullRequest
0 голосов
/ 21 ноября 2018

Я занимаюсь разработкой приложения, которое предлагает возможности редактирования Rich Text со светлой и темной темой.При переходе к темной теме я не могу видеть текст в фокусе, и любая цветовая окраска текста теряется при переключении фокуса.Я создал простой текстовый регистр с двумя полями для расширенного текста, кнопкой для изменения выделенного текста на красный и двумя кнопками для переключения между светлой и темной темой.Я применяю стилевое оформление для расширенного поля редактирования, но похоже, что оно игнорирует x: Key = "TextControlForegroundFocused" или, возможно, вычисляет SystemBaseHighColor до применения меток темы.

XAML

<Page.Resources>

    <!-- RichEditBox Styling-->
    <SolidColorBrush x:Key="TextControlForegroundFocused" Color="{ThemeResource SystemBaseHighColor}"/>
    <SolidColorBrush x:Key="TextControlForegroundDisabled" Color="{ThemeResource SystemBaseHighColor}"/>
    <SolidColorBrush x:Key="TextControlBackgroundFocused" Color="{ThemeResource TextControlForeground}"/>

</Page.Resources>

<StackPanel Name="_Root" >

    <StackPanel Orientation="Horizontal" >
        <Button Content="Red" Click="OnRed"/>
        <Button Content="Dark Theme" Click="OnDark"/>
        <Button Content="Light Theme" Click="OnLight"/>
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <RichEditBox Name="RichEditor1" Style="{ThemeResource EditBoxStyle}" Width="250" Height="200"/>
        <RichEditBox Name="RichEditor2" Style="{ThemeResource EditBoxStyle}" Width="250" Height="200"/>
    </StackPanel>

</StackPanel>

C #

    private void OnRed(object sender, RoutedEventArgs e)
    {
        RichEditor1.Document.Selection.CharacterFormat.ForegroundColor = Colors.Red;
        RichEditor2.Document.Selection.CharacterFormat.ForegroundColor = Colors.Red;
    }

    private void OnDark(object sender, RoutedEventArgs e)
    {
        _Root.RequestedTheme = ElementTheme.Dark;
        _Root.Background = new SolidColorBrush(Colors.Black);
    }
    private void OnLight(object sender, RoutedEventArgs e)
    {
        _Root.RequestedTheme = ElementTheme.Light;
        _Root.Background = new SolidColorBrush(Colors.White);
    }

Любое предложение о том, как сделать эту работу?

...