Перейдите к существующему экземпляру страницы в Silverlight - PullRequest
1 голос
/ 07 марта 2011

На Frame в серебряном свете я хочу иметь возможность перейти к существующему экземпляру Page. Короче вот что я хочу:

Page p = ...; // initialize the page and set some of the properties
contentframe.Navigate(p);

Вместо использования Uri, из которого создана страница.

Может ли это быть достигнуто (как в WPF), или рама должна быть заменена на ContentControl?

Редактировать: Больше ясности: есть ли способ, которым NavigationService.Navigate(object root), доступный в WPF, можно моделировать в silverlight?

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Проблема, с которой вы сталкиваетесь, - это та же проблема, с которой я сталкиваюсь.Событие происходит за пределами фрейма, и страница не имеет представления о том, что событие произошло, но его необходимо уведомить об этом событии.

Теперь можно заставить страницу в этом фрейме обновить себя.или обработайте эти события с помощью 1: временное сохранение состояния страницы и b) передача «команд» через строку запроса.

0 голосов
/ 07 марта 2011

Ваш вопрос кажется действительно запутанным.

следует ли заменить фрейм на ContentControl?

Это может означать, что у вас нет веских причин дляВо-первых, установите рамку, и вы не используете навигационную структуру.В этом случае, безусловно, вы должны заменить Frame чем-то другим.

Если вы можете заменить рамку чем-то другим, вам не нужно, чтобы ваша «Страница» была типа Page, это можета также UserControl.

Все это может привести к простому Xaml: -

<Border x:Name="content" />

и кс: -

UserControl p = ...; 
content.Child = p;

Редактировать :

Вам необходимо сохранить фрейм, поэтому вы не можете заменить его ContentControl.

Вы можете просто присвоить свой Page непосредственно Frame Content собственность.Однако я не уверен, что произойдет, если вы затем нажмите кнопку назад.Я подозреваю, что он перейдет на страницу, предшествующую странице, которую вы заменили.

Еще один вариант - для нас статический сервис, который помещает свойства вашей страницы в стек, и вы можете вытащить их из этого стека, когдаинициализируется.Это позволит вам перемещаться с помощью Uri на вашу страницу.

...