xaml - 如何更改应用程序中所有文本的颜色

问题描述 投票:0回答:3

我正在开发一个具有默认黑色背景和白色文本颜色的Windows Phone 8应用程序。我想在应用程序的每个页面上更改这些颜色。我怎样才能以最简单的方式实现这一目标?

我在App.xaml文件中添加了以下样式,以查看它是否更改了单个页面中所有文本的颜色:

<Style x:Key="DefaultPage" TargetType="phone:PhoneApplicationPage">
        <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
        <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}"/>
        <Setter Property="Foreground" Value="Red"/>
        <Setter Property="SupportedOrientations" Value="Portrait"/>
        <Setter Property="Orientation" Value="Portrait"/>
        <Setter Property="shell:SystemTray.IsVisible" Value="True"/>
    </Style>

但它的作用是,它将所有文本的颜色更改为红色,但具有预定义样式的文本(如标题和应用程序名称)除外。

任何有关此的帮助或信息将受到高度赞赏。

xaml windows-phone-8
3个回答
0
投票

当下没有Visual Studio。我建议覆盖系统资源。类似的东西:

((SolidColorBrush)Resources["PhoneBackgroundBrush"]).Color = Color.FromArgb(0xFF, 0x00, 0x00, 0x00);
((SolidColorBrush)Resources["PhoneTextBoxBrush"]).Color = Color.FromArgb(0xBF, 0xFF, 0xFF, 0xFF);
((SolidColorBrush)Resources["PhoneTextBoxForegroundBrush"]).Color = Color.FromArgb(0xFF, 0x00, 0x00, 0x00);

0
投票

如果您的应用标题定义如下:

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="APP NAME" 
                       Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="Page Title" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

页面样式中定义的字体颜色将被qazxsw poi覆盖。所以你需要为它创建一个自定义样式:

PhoneTextNormalStyle

然后你应该将新风格应用到你的<Style x:Key="RedPhoneTextNormalStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource PhoneTextNormalStyle}"> <Setter Property="Foreground" Value="Red"/> </Style>

TextBlock

0
投票

最简单的方法是使用<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="APP NAME" Style="{StaticResource RedPhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="Page Title" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> Foreground元素的TextBlock属性。您所要做的就是为元素命名,如果它是预定义的元素(在XAML中,则为它),Visual Studio将自动为它创建一个对象。假设元素的名称是XAML文件中的TextBox。你所要做的就是写下这一行:

textBlock

,如果你想使用预定义的画笔或

textBlock.Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Red);

,如果你想使用你选择的十六进制代码的画笔颜色。这应该可以帮助您以所需的颜色为所需的文本着色。

另外,你可以在textBlock.Foreground = (Brush) (new System.Windows.Media.BrushConverter()).ConvertFromString("#FF0000") 中定义一个<SolidColorBrush Color="#FF0000" x:Name="Red"/>,如下所示:

<Page.Resources></Page.Resources>

然后在代码中的任何地方使用<Page.Resources> <SolidColorBrush Color="#FF0000" x:Name="Red" /> </Page.Resources>这样简单的东西,在任何地方使用SolidColorBrush

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.