Xaml 如何在metro应用程序中设置页面背景

Xaml 如何在metro应用程序中设置页面背景,xaml,windows-8,microsoft-metro,winrt-xaml,Xaml,Windows 8,Microsoft Metro,Winrt Xaml,我有个奇怪的问题。我无法在metro应用程序中为我的页面设置背景。 下面是我的xaml结构的简单视图 <Page Background="White"> <ListView Background="Red"> </ListView> </Page> 问题是页面的背景是黑色的。所以我在黑色背景上设置了红色矩形(ListView区域)。我希望我的页面是白色的。我看到的例子很少,似乎我做得很好。我也尝试过使用画笔,但结果相同。我认

我有个奇怪的问题。我无法在metro应用程序中为我的页面设置背景。 下面是我的xaml结构的简单视图

<Page Background="White">
    <ListView Background="Red">

    </ListView>
</Page>


问题是页面的背景是黑色的。所以我在黑色背景上设置了红色矩形(ListView区域)。我希望我的页面是白色的。我看到的例子很少,似乎我做得很好。我也尝试过使用画笔,但结果相同。

我认为您遇到的问题是页面的默认样式覆盖了您设置背景色的尝试

如果查看文件StandardStyles.xaml,它包含一个LayoutRootStyle(在文件的末尾)。如果将默认值更改为十六进制颜色值(例如,#FFFF0000将显示红色),则应用程序的背景将相应更改。这是一个简单的方法来做你想做的,但可能不是一个最佳实践

<Style x:Key="LayoutRootStyle" TargetType="Panel">
    <Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundThemeBrush}"/>
    <Setter Property="ChildrenTransitions">
        <Setter.Value>
            <TransitionCollection>
                <EntranceThemeTransition/>
            </TransitionCollection>
        </Setter.Value>
    </Setter>
</Style>

或者,您可以为根网格元素设置背景,这将为您提供更细粒度的控制。或者,通过将规则复制到页面的page.Resources节中,然后修改后台setter的值,可以创建一个覆盖页面的page.Resources节中LayoutRootStyle的自定义样式

下面是它的外观:

<Page.Resources>
    <Style x:Key="LayoutRootStyle" TargetType="Panel">
        <Setter Property="Background" Value="#FFFF0000"/>
        <Setter Property="ChildrenTransitions">
            <Setter.Value>
                <TransitionCollection>
                    <EntranceThemeTransition/>
                </TransitionCollection>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>


希望这能有所帮助。

如果你希望你的应用程序在所有页面上都有白色背景,那么实现这一点的最简单方法是在app.xaml文件中将RequestedTheme设置为亮起。这不仅会给你一个白色的背景,但它会自动改变所有其他颜色,如前景颜色(文本等)将默认为黑色

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             ...
             RequestedTheme="Light">

对于单个页面,我总是在页面中使用网格作为根容器,这很好:

<common:LayoutAwarePage
    x:Name="pageRoot"
    ... 
    >

    <Grid Background="White">

请注意,如果要使用图像作为背景而不是颜色,则必须使用附加属性:

<Grid>
    <Grid.Background>
        <ImageBrush x:Name="backgroundGrid" ImageSource="/Assets/Paper.jpg" />
    </Grid.Background>


它不起作用。我更改了样式xaml并将其添加到页面xaml,但它不起作用:/dunno whyfind solution。上面的回答中的注释中描述了XAML主题以供参考,XAML主题已在thx上描述并提供。但是VS创建的模板没有标签,我测试了不同的组合,仍然无法更改背景。你需要我提供更多的代码吗?好的,我找到了一个解决方案。我已经创建了网格,它是在全高和全宽上拉伸的主要根元素。我已经为该网格设置了背景,它可以正常工作。应用程序标记放在App.xaml中