【问题标题】:UWP - Set foreground color to dynamic light and dark theme color programmaticallyUWP - 以编程方式将前景色设置为动态明暗主题色
【发布时间】:2020-08-06 08:58:02
【问题描述】:

我正在使用以下方法更改TextBlockUWP 的前景色。

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

我应该如何更改代码以便我可以使用动态明暗主题颜色,例如SystemBaseHighColor?可通过https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/xaml-theme-resources获取颜色列表

【问题讨论】:

    标签: uwp colors themes foreground


    【解决方案1】:

    在代码中创建与ThemeResource相同的效果更复杂。需要做到以下几点:

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

    相比之下,更合适的方法是创建TextBlock Style。创建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的样式,无需手动处理主题变化。

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 2017-02-18
      • 2013-01-06
      • 2011-06-13
      相关资源
      最近更新 更多