如果要转到页面的XAML并添加
Background="Blue"
到顶层
navigation:Page
也不会有任何效果的元素。
的顶级子级
Page
最有可能是面板类型,如
Grid
最有可能给出默认名称
LayoutRoot
. 因此,将您的代码更改为:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string s = this.NavigationContext.QueryString["type"];
if ( s == "add")
{
LayoutRoot.Background = new SolidColorBrush(Colors.Red);
}
else
{
LayoutRoot.Background = new SolidColorBrush(Colors.Blue);
}
}
解释
只有
Border
元素和
Panel
元素实际上具有
Background
.
这个
Control
基类型还具有
背景
但它不知道如何处理它。它让控件模板决定如何处理
背景
属性。在大多数情况下,模板将包含顶级
边界
会有很多其他的东西
Background="{TemplateBinding Background}"
传递到控件的
背景
值显示到边框。
两个
页
和
UserControl
派生自
控制
因此他们都获得了
背景
属性。但是,如果没有模板,这些控件中的任何一个都不会对属性有任何使用,并且修改它对任何内容都没有影响。