2013-10-14 3 views
2

Il s'avère que j'ai exactement les mêmes parties de code dans toutes les pages XAML dans mon application. Premier morceau de code est responsable des transitions:Ne vous répétez pas - XAML et WPF

<toolkit:TransitionService.NavigationInTransition> 
    <toolkit:NavigationInTransition> 
     <toolkit:NavigationInTransition.Backward> 
      <toolkit:SlideTransition Mode="SlideLeftFadeIn" /> 
     </toolkit:NavigationInTransition.Backward> 
     <toolkit:NavigationInTransition.Forward> 
      <toolkit:SlideTransition Mode="SlideLeftFadeIn" /> 
     </toolkit:NavigationInTransition.Forward> 
    </toolkit:NavigationInTransition> 
</toolkit:TransitionService.NavigationInTransition> 
... 

Et le second décrit la barre d'application:

<phone:PhoneApplicationPage.ApplicationBar> 
     <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> 
... 

est-il un moyen qui peut aider à éviter une telle duplication de code? Si je comprends bien cela ne peut pas être résolu avec des styles ou des modèles de données, ou peut-il?

Répondre

2

Le bit de navigation peut être appliqué à toutes les pages sans duplication de code à l'aide d'un style. Voici le style de transition que j'ai utilisé pour l'un de mes projets. Cela devrait être placé dans votre fichier App.xaml

<Style x:Key="TransitionPageStyle" TargetType="phone:PhoneApplicationPage"> 
     <Setter Property="toolkit:TransitionService.NavigationInTransition"> 
      <Setter.Value> 
       <toolkit:NavigationInTransition> 
        <toolkit:NavigationInTransition.Backward> 
         <toolkit:TurnstileTransition Mode="BackwardIn"/> 
        </toolkit:NavigationInTransition.Backward> 
        <toolkit:NavigationInTransition.Forward> 
         <toolkit:TurnstileTransition Mode="ForwardIn"/> 
        </toolkit:NavigationInTransition.Forward> 
       </toolkit:NavigationInTransition> 
      </Setter.Value> 
     </Setter> 
</Style> 

Vous pouvez ensuite appliquer ce style à une page que vous souhaitez en insérant cet extrait

Style="{StaticResource TransitionPageStyle}" 

sur votre téléphone: tag PhoneApplicationPage habituellement au sommet de tout xaml. En ce qui concerne la balise de la barre d'application, je crois qu'il a besoin d'être répété car c'est un peu comme un contrôle lui-même. il a ses propres propriétés et méthodes.

+0

Votre solution fonctionne bien pour les transitions. –

+0

Vous pouvez également déplacer une initialisation de contrôle vers codebehind et utiliser la même classe de base pour toutes les pages comme ici: http://blogs.msdn.com/b/jschaffe/archive/2011/03/03/creating-a-custom- base-page-pour-windows-phone-7.aspx –

+0

Tariq, je veux maintenant spécifier ma méthode de page de base en tant que gestionnaire d'événements pour le bouton "Click" du bouton de la barre d'applications. Je reçois une erreur d'analyse XAML liée particulièrement au gestionnaire d'événements. Est-il possible de faire comme ça? –