xaml - 如何更改应用程序中所有文本的颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xaml - 如何更改应用程序中所有文本的颜色相关的知识,希望对你有一定的参考价值。
我正在开发一个具有默认黑色背景和白色文本颜色的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>
页面样式中定义的字体颜色将被qazxsw poi覆盖。所以你需要为它创建一个自定义样式:
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>
和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
。
希望有所帮助。
以上是关于xaml - 如何更改应用程序中所有文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin形式;如何从rg.plugins弹出页面的xaml.cs类访问标签?