Если бы вам пришлось перейти на 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
, но не знает, что с ним делать.Он оставляет это на усмотрение шаблона управления, чтобы решить, что делать со свойством Background
.В большинстве случаев шаблон будет содержать верхний уровень Border
, который будет иметь среди других вещей Background="{TemplateBinding Background}"
, который передает значение Background
элемента управления в границу для отображения.
Оба Page
и UserControl
происходят от Control
, следовательно, они оба приобретают свойство Background
.Однако, не имея шаблона, ни один из этих элементов управления не будет использоваться для свойства, и его изменение ни на что не повлияет.