Многостраничные приложения в Silverlight - Запуск приложения

ОГЛАВЛЕНИЕ

Запуск приложения

При запуске приложение автоматически вызывает Application_Startup. Как уже обсуждалось ранее, создается новый экземпляр PageSwitcher, и он упрятан в Switcher (так же, как RootVisual). Cоздается новый экземпляр Page и вызывается Switch, при этом статическому методу передается элемент управления.

Метод Switch перегружается, и Application_Startup вызывает  первую версию метода, который получает только один аргумент. Он ищет и находит только что созданный pageSwitcher и вызывает Navigate, передавая при этом только что полученный UserControl.

Теперь  хорошо было бы пересмотреть Switcher и добавить проверку  ошибок, которую мы опустили ранее. Здесь я продемонстрирую вам полную версию Switcher.cs,

using System;
using System.Windows.Controls;
 
namespace PageSwitchSimple
{
   public static class Switcher
   {
      public static PageSwitcher pageSwitcher;
 
      public static void Switch( UserControl newPage )
      {
 
         if ( pageSwitcher != null )
         {
            pageSwitcher.Navigate( newPage );
         }
         else
         {
 
            throw new Exception( "Switcher.pageSwitcher is null" );
         }
      }
 
      public static void Switch( UserControl newPage, object state )
      {
         if ( pageSwitcher != null )
         {
            pageSwitcher.Navigate( newPage, state );
         }
         else
         {
           throw new Exception( "Switcher.pageSwitcher is null" );
         }
      }
   }
}

Элемент управления переключается к перегруженному методу Navigate экземпляра PageSwitcher, где устанавливается содержимое,

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

На данном этапе на экране отображается первая страница и система находится в покое.