UWP - программно установите цвет переднего плана на динамический c светлый и темный цвет темы - PullRequest
0 голосов
/ 06 августа 2020

Я использую следующее, чтобы изменить цвет переднего плана TextBlock в UWP.

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

Как мне изменить код, чтобы я мог использовать динамический c свет и темный цвет темы например SystemBaseHighColor? Список цветов доступен по адресу https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/xaml-theme-resources

1 Ответ

0 голосов
/ 06 августа 2020

Сложнее создать в коде тот же эффект, что и ThemeResource. Необходимо сделать следующее:

  1. Получить ресурс через Resources["resourceKey"] и преобразовать его в Bru sh и назначить его 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 таким образом устраняет необходимость вручную обрабатывать изменения темы.

...