Аналог TextBlock.Foreground для UWP/WinUI

Можно ли глобально установить передний план для границы для внутреннего контроля? Похоже на WPF TextBlock.Foregroundприкрепленное имущество. Я пробовал этот код, он не работает:

      <Border.Resources>
    <SolidColorBrush
        x:Key="SystemControlForegroundAltMediumHighBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundAltHighBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundBaseMediumBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundBaseHighBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundBaseLowBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundBaseMediumHighBrush"
        Color="Black"
        />
    <SolidColorBrush
        x:Key="SystemControlForegroundBaseMediumLowBrush"
        Color="Black"
        />
</Border.Resources>

я тоже пробовал DefaultTextForegroundThemeBrush и SystemColorWindowTextColor

PS Немного поясню причины — пишу утилиту для перевода xaml-кода WPF в эквивалентный UWP/WinUI, и ищу альтернативу без переопределения стилей (т.к. внутренние элементы управления могут явно задавать свои). Пока единственное решение, которое я вижу, — это явно установить свойство Foreground для всех текстовых блоков внутри границы, если оно не установлено.

1 ответ

Можно ли глобально установить передний план для границы для внутреннего контроля?

Я должен сказать, что ответ - нет. Невозможно глобально изменить системный цвет, он просто применяется к границе и ее дочерним элементам. Вы можете переопределить системный цвет только в Application.Resourcesиз App.Xaml. И это повлияет на все элементы управления в приложении, использующем этот цвет.

Для вашего сценария я предлагаю вам изменить Foregroundсвойство этих дочерних элементов управления в элементе управления Border.

Как это:

       <Border>
        <Border.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="Red" />
            </Style>
        </Border.Resources>
         <!--red text-->
        <TextBlock Text="2132123314132133143123314213412343" />
</Border>
     <!--black text-->
    <TextBlock Text="2132123314132133143123314213412343" />
Другие вопросы по тегам