我正在开发一个带有默认黑色背景和白色文字颜色的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>
但它的作用是,它将所有文本的颜色更改为红色,除了具有预定义样式的文本(如标题和应用程序名称)。
对此有任何帮助或信息将受到高度赞赏。
答案 0 :(得分: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);
答案 1 :(得分: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>
页面样式中定义的字体颜色将被PhoneTextNormalStyle
覆盖。所以你需要为它创建一个自定义样式:
<Style x:Key="RedPhoneTextNormalStyle" TargetType="{x:Type TextBlock}"
BasedOn="{StaticResource PhoneTextNormalStyle}">
<Setter Property="Foreground" Value="Red"/>
</Style>
然后您应该将新样式应用于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>
答案 2 :(得分:0)
最简单的方法是使用Foreground
和TextBlock
元素的TextBox
属性。您所要做的就是为元素命名,如果它是预定义的元素(在XAML中,则为它),Visual Studio将自动为它创建一个对象。我们在XAML文件中说明元素的名称是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
使用textBlock.Text = Red
,只需使用以下内容即可:
{{1}},代码中的任何位置。
希望有所帮助。