UWP-以编程方式将前景色设置为动态的浅色和深色主题颜色

时间:2020-08-06 08:58:02

标签: uwp colors themes foreground

我正在使用以下内容来更改TextBlockUWP的前景色。

 textBlock.Foreground = new SolidColorBrush(Colors.Orange);

如何更改代码,以便可以使用动态的浅色和深色主题颜色,例如SystemBaseHighColor?颜色列表在https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/xaml-theme-resources

中可用

1 个答案:

答案 0 :(得分:0)

在代码中创建与ThemeResource相同的效果更加复杂。需要执行以下操作:

  1. 通过Resources["resourceKey"]获取资源并将其转换为Brush并将其分配给TextBlock.Foreground
  2. 处理主题更改(例如ThemeListener
  3. 重新分配

相比之下,更合适的方法是创建TextBlock样式。创建TextBlock时,请获取Style并将其分配给TextBlock.Style

<Style TargetType="TextBlock" x:Key="CustomTextStyle">
    <Setter Property="Foreground" Value="{ThemeResource SystemBaseHighColor}" />
</Style>
textBlock.Style = (Style)Application.Current.Resources["CustomTextStyle"];

通过这种方式设置TextBlock的样式,无需手动处理主题更改。