Astuce Silverlight : Comment appeler Page.xaml.cs depuis App.xaml.cs ? - #S016

image 

Votre classe App (App.xaml + App.xaml.cs) est principalement utilisée pour les événements globaux et les déclarations de styles.

Les événements principaux que cette classe gère inclus par défaut :

  1. Application_Startup() – appelé lors du démarrage de l’application.
  2. Application_Exit() - appelé lors de l’arrêt de l’application.
  3. Application_UnhandledException() - appelé lorsqu’une exception non gérée apparaît.

Votre classe Page (Page.xaml + Page.xaml.cs) est là où vous allez généralement mettre le cœur de la logique de votre application ainsi que les déclarations de l’interface utilisateur. Maintenant, comment faire si vous souhaitez communiquer avec votre logique du jeu dans votre classe Page lorsqu’un événement comme Application_Exit() est déclenché dans la classe App ?

Dans Application_Startup(),votre classe App créée une instance de votre classe Page et stocke celle-ci comme un UIElement sous la propriété RootVisual :

 private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new Page();
}

Pour illustrer l’appel, ajoutons une fonction get publique dans Page.xaml.cs :

 public partial class Page : UserControl
{
    private static bool _done = false;
 
    public bool Done
    {
        get { return _done; }
        set { _done = value; }
    }
}

Au lieu d’appeler n’importe quel membre public dans la classe Page vous devrez caster le type RootVisual en Page étant donné que par défaut c’est un UIElement. Dans App.xaml.cs, faisons un appel pour définir Done = true dans la classe Page lorsque l’application est arrêtée :

 private void Application_Exit(object sender, EventArgs e)
{
    ((Page)this.RootVisual).Done = true;            
}

Syndication : Mike Snow’s Weblog
Traduction autorisée par Mike Snow.