我有一个奇怪的问题。我无法为我的metro应用程序页面设置背景。 以下是我的xaml结构的简单视图
<Page Background="White">
<ListView Background="Red">
</ListView>
</Page>
问题在于页面的背景是黑色的。因此,我将红色矩形(ListView区域)设置在黑色背景上。我希望我的页面是白色的。我看过一些示例,似乎我做得不错。我也尝试使用画刷,但结果相同。
我有一个奇怪的问题。我无法为我的metro应用程序页面设置背景。 以下是我的xaml结构的简单视图
<Page Background="White">
<ListView Background="Red">
</ListView>
</Page>
问题在于页面的背景是黑色的。因此,我将红色矩形(ListView区域)设置在黑色背景上。我希望我的页面是白色的。我看过一些示例,似乎我做得不错。我也尝试使用画刷,但结果相同。
<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>
我认为你遇到的问题是默认页面样式覆盖了你设置背景颜色的尝试。
如果你查看StandardStyles.xaml文件,它包含一个LayoutRootStyle(在文件末尾)。如果你将Value从默认值更改为十六进制颜色值(例如,#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>
另一种方式是,您可以设置根Grid元素的背景,这样您就可以更细粒度地控制。或者您可以创建一个自定义样式,在页面的Page.Resources部分覆盖LayoutRootStyle,将规则复制到该部分,然后修改背景setter的值。
下面是示例:
<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>