Навигация по страницам Silverlight с пользовательским управлением и MVVM Light

Я разрабатываю приложение Silerlight и остановился на фреймворке MVVM Light. Одна из вещей, которую я пытаюсь сделать, - это создать элемент управления LoginStatus, который можно использовать в нескольких местах, потому что у нас есть разные макеты, в которые сгруппированы страницы.

Моя задача - как перенаправить страницу из пользовательского элемента управления. Когда пользователи «выходят из системы», я хочу перенаправить их на другую страницу, а не просто на другой вид. У кого-нибудь есть мысли или примеры, которые могут сделать что-то подобное.

Большинство примеров, которые я видел, просто меняют статус в текущем представлении.

dbl


person dblwizard    schedule 23.01.2012    source источник


Ответы (1)


Если вы действительно хотите перейти на новую страницу, то есть выйти из приложения silverlight, вы можете использовать метод Navigate класса System.Windows.Browser.HtmlWindow (документация).

System.Windows.Browser.HtmlPage.Window.Navigate(
    new Uri("http://silverlight.net")
);

В противном случае, если вы не хотите покидать приложение Silverlight, вы просто переходите к представлению по умолчанию, которое информирует пользователя о том, что он не вошел в систему.

Изменить:

Для реализации службы навигации в Silverlight см., Например, это опубликовать или эту публикацию.

person AxelEckenberger    schedule 24.01.2012
comment
Хорошо, но каков механизм перехода к другому представлению или изменения главной страницы с другим макетом и навигацией: Fram из пользовательского элемента управления? Я не хочу покидать silverlight, но хочу изменить один из них в коде. Достаточно просто использовать гиперссылку или кнопку гиперссылки на пользовательском элементе управления для установки NavigationUri, но я хочу сделать это либо из View, либо из ViewModel. - person dblwizard; 24.01.2012
comment
@dblwizard: см. редактировать. Это примеры того, как это можно сделать, но есть несколько способов. Лично в одном из своих проектов я адаптировал Подход Лорана для WP7 к Silverlight через прикрепленное свойство, но у меня нет доступных записей ... :-( - person AxelEckenberger; 25.01.2012
comment
Obalix, проблема со всеми этими примерами заключается в том, что представления относятся к типу Page, но MVVM Light Toolkit использует UserControl для каждого представления. Я до сих пор не понимаю, как с помощью кода можно изменить представление. Или измените главную страницу, чтобы она выглядела иначе. - person dblwizard; 26.01.2012
comment
MVVM Light не привязан к конкретному элементу управления View. Вы можете использовать все, что захотите, например UserControl, Page, Window, PivotPage и так далее. Просто создайте страницу и установите DataContext, как если бы вы использовали UserControl. - person AxelEckenberger; 26.01.2012
comment
Думаю, я не должен правильно объяснять свою проблему. Я понимаю, что могу использовать Page или UserControl для представления, и все работает нормально. Моя проблема заключается в том, как из кода или модели представления UserControl перейти к новому представлению. У вас нет доступа к NavigationService. - person dblwizard; 26.01.2012
comment
@dblwizard видит два сообщения в моем первом редактировании ... они оба имеют дело с этим. - person AxelEckenberger; 28.01.2012