更改 WP7 所有页面的背景颜色

3
有没有一种方法可以更改所有页面的背景颜色?或者我只需要在每个页面上更改LayoutRoot的颜色?
4个回答

2
你可以创建一个应用背景颜色的样式,然后将该样式应用到每个页面上。这样,如果以后需要进行更多更改,只需修改该样式即可。你可以在使用样式和资源简化xaml中查看已应用于页面的示例样式,虽然其中不包括背景,但应该很容易理解。

请问您能否提供一个示例或链接? - Josh Close
已编辑以包括示例链接 - Nigel Sampson

0
你可以创建一个基础页面类,并在其中设置背景颜色,然后在所有其他页面中从基础页面继承。
编辑
基础页面代码:
public class BasePage : PhoneApplicationPage
{
    public BasePage()
    {
        Background = new SolidColorBrush(Colors.Red);
    }
}

主页面 xaml。请注意,网格绑定到页面的背景颜色。

<WindowsPhoneApplication2:BasePage
    x:Class="WindowsPhoneApplication2.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:WindowsPhoneApplication2="clr-namespace:WindowsPhoneApplication2"
    mc:Ignorable="d"
    d:DesignWidth="480"
    d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="PortraitOrLandscape"
    Orientation="Portrait"
    shell:SystemTray.IsVisible="True"
    x:Name="root">

    <Grid
        x:Name="LayoutRoot"
        Background="{Binding Path=Background, ElementName=root}">

    </Grid>

</WindowsPhoneApplication2:BasePage>

我有一个基础页面,尝试在构造函数和加载时执行此操作,但它没有设置背景。Background = new SolidColorBrush( Color.FromArgb( 255, 109, 41, 100 ) ); - Josh Close
这应该可以工作 - 我已经使用了这种方法。然而,如果您有像全景图这样的“整个页面”控件,那么显然您也需要更改其颜色。 - Stuart
你可以放一个这个设置的例子吗?我有一个基础页面,在那里我按照之前所讲的设置了背景。我现在正在看一个“Pivot”页面。背景被设置为“透明”。我尝试过去掉背景,也不行。我会用我尝试过的基本代码更新问题。 - Josh Close
我尝试直接在XAML页面中设置背景,但它没有起作用。这是因为将Grid(最外层项)的背景设置为“Transparent”。将Grid背景设置为空也没有帮助。如果我设置Grid的背景,则可以正常工作。似乎设置页面背景不起作用。 - Josh Close
事实上,即使完全删除页面上的所有内容,仍然无法显示页面的背景颜色。 - Josh Close
好的,我明白了。所以你将网格的背景绑定到页面(根)的背景上。我原以为你是指设置页面背景会改变背景颜色。这与使用自定义样式和资源(如@Nigel提到的)非常相似。谢谢你澄清这一点。 - Josh Close

0

我已经找到了一个解决方法。

问题在于Mango如何定义页面的背景颜色。

唯一的解决方法是使用应用程序范围内的样式,并将其应用于页面。

这里有一个很好的指南: 逐步定制Windows Phone Mango应用主题

按照这些建议,我甚至能够动态地更改颜色。


-1
将以下内容添加到应用程序资源中,可以在所有页面上设置颜色。
<Style TargetType="phone:PhoneApplicationFrame">
    <Setter Property="Background" Value="{StaticResource SomeBrush}"/>
</Style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接