Многостраничное приложение silverlight

#silverlight

#silverlight

Вопрос:

Я следую небольшому руководству о том, как переключать страницы в Silverlight. Его можно найти здесь:

http://jesseliberty.com/2008/05/31/multi-page-applications-in-silverlight/
Оно немного старше, но все работало.

Используемый здесь метод заключается в создании отдельной страницы с «функцией навигатора». Если вы находитесь на странице 1, вы используете что-то вроде этого:

 PageSwitcher ps = this.Parent as PageSwitcher;
ps.Navigate(new Page2());
  

Навигация является единственной функцией в PageSwitcher:

 public void Navigate(UserControl nextPage) {
    this.Content = nextPage;
}
  

Тем не менее, способ, которым это обрабатывается, кажется немного странным. Мне все еще интересно, в чем разница между добавлением нового пользовательского элемента управления и страницы. Я пытался добавить их оба, они очень похожи.

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

Ответ №1:

Я думаю, что разница между Page и UserControl заключается в том, что на странице есть некоторые методы навигации, такие как NavigationService.

Для получения другого способа ознакомьтесь с экранами и проводниками Caliburn Micro. Оно позволяет вам выполнять некоторые расширенные навигационные функции без особых усилий, ознакомьтесь с образцом, HelloScreens. Оно добавляет жизненный цикл вашим экранам. А также возможность узнать, когда просмотр был привязан, и тому подобные приятные вещи.

Комментарии:

1. @Derek_Beattie: Я взглянул на это, попробовал несколько примеров и нахожу, что Caliburn чертовски сложен. Учебные пособия вообще не помогают. Часто я задаюсь вопросом, когда что-то было введено, нужно ли мне что-то добавлять в код или это просто для ссылки на исходный код. Такое ощущение, что этот проект действительно предполагает, что вы эксперт с многолетним опытом.

2. Вы все еще можете использовать навигационные материалы и использовать что-то вроде MVVM Light messenger как способ сообщить NavigationFrame перейти на другую страницу. У CM, я полагаю, немного кривовато, я думаю, то, что они сделали, блестяще. Нет ничего проще, чем присвоить элементу управления контентом имя x:Name=»ActiveItem» и позволить CM сделать все остальное.

3. @Derek_Beattie: Во время моего поиска я заметил, что некоторые из используемых компонентов больше не входят в основную установку Silverlight, а являются частью отдельного инструментария. Посмотрим завтра, поможет ли это кому-нибудь.