TextBlock.Foreground UWP/WinUI 的类似物

TextBlock.Foreground analogue for UWP/WinUI

内控是否可以全局设置Foreground for Border?类似于 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>

我也试过DefaultTextForegroundThemeBrushSystemColorWindowTextColor

P.S。我将稍微解释一下原因——我正在编写一个实用程序来将 WPF xaml 代码转换为等效的 UWP/WinUI,并且我正在寻找一种无需重新定义样式的替代方法(因为内部控件可以显式设置它们的自己的)。到目前为止,我看到的唯一解决方案是在 Border 内的所有 TextBlocks 上显式设置 Foreground 属性(如果未设置的话)。

Is it possible to globally set Foreground for Border for internal controls?

我不得不说答案是否定的。无法全局更改仅适用于 Border 及其子项的系统颜色。您只能从 App.Xaml 覆盖 Application.Resources 中的系统颜色。这将影响应用程序中使用此颜色的所有控件。

对于您的情况,我建议您更改 Border 控件中这些子控件的 Foreground 属性。

像这样:

 <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" />