明るいテーマと暗いテーマを使用して、リッチ テキスト編集機能を提供するアプリを開発しています。暗いテーマに切り替えると、フォーカスのあるテキストを表示できず、フォーカスを切り替えるとテキストの色が失われます。2 つのリッチ テキスト ボックス、選択したテキストを赤に変更するボタン、および明るいテーマと暗いテーマを切り替える 2 つのボタンを備えた単純なテキスト ケースを作成しました。リッチ エディット ボックスにスタイルを適用していますが、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);
}
これを機能させる方法について何か提案はありますか?