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

xaml-如何更改应用程序中所有文本的颜色,xaml,windows-phone-8,Xaml,Windows Phone 8,我正在开发一个windows phone 8应用程序,默认为黑色背景和白色文本颜色。我想在应用程序的每个页面上更改这些颜色。如何以最简单的方式实现这一点 我将以下样式添加到我的App.xaml文件中,以查看它是否会更改单个页面中所有文本的颜色: <Style x:Key="DefaultPage" TargetType="phone:PhoneApplicationPage"> <Setter Property="FontFamily" Value="{Stat

我正在开发一个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>

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


非常感谢您提供的任何帮助或信息。

目前没有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);

如果您有这样定义的应用程序标题:

<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>
然后您应该将新样式应用于
TextBlock

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

最简单的方法是使用
文本块
文本框
元素的
前台
属性。如果元素是预定义的(在XAML中是预定义的),那么您所要做的就是为它指定一个名称,VisualStudio将自动为它创建一个对象。假设元素的名称是XAML文件中的
textBlock
。你所要做的就是写一行:

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

,如果要使用预定义的笔刷或

textBlock.Foreground = (Brush) (new System.Windows.Media.BrushConverter()).ConvertFromString("#FF0000")
,如果要使用您选择的十六进制代码的画笔颜色。这将有助于将所需的文本颜色设置为所需的颜色

此外,您可以在
中定义
,如下所示:

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

然后使用
SolidColorBrush
,使用以下简单的工具:
textBlock.Text=Red
,位于代码中的任意位置


希望能有帮助。

你用这个几乎解决了问题。我从来没有听说过“简单的绝对方式”(我可能错了,我只是个新手)。因为只要有定义颜色的“自定义样式”,并且该样式应用于靠近对象的一个容器上,然后应用于常规样式,它就会覆盖该样式。因此,部分解决方案可能是覆盖“通用windows phone样式”使用的系统资源,并将其与基于最初使用的样式的样式相结合。(基本上结合了您已经得到的两个答案)+使用您当前的解决方案