0

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

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

4

1 回答 1

0

是否可以全局设置 Foreground for Border 进行内部控制?

我不得不说答案是否定的。没有办法全局更改系统颜色,只适用于边框及其子项。您只能在Application.ResourcesApp.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" />
于 2022-01-25T08:31:15.653 回答