Nous écrivons une application basée sur Prism Silverlight et nous avons un ensemble de pages dans des modules distincts.Comment puis-je partager VisualStateManager entre deux (ou plusieurs) fichiers XAML?
La transition entre les pages est gérée par les événements de navigation et chaque module a les méthodes suivantes mises en œuvre pour afficher la page quand vous y naviguez et se cacher quand naviguer à partir de:
public void Show()
{
VisualStateManager.GoToState(this, "ShowState", true);
}
public void Hide()
{
VisualStateManager.GoToState(this, "HideState", true);
}
Au moment « ShowState » et "HideState" sont définis dans le fichier XAML de chaque module et sont dupliqués beaucoup trop souvent.
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStates">
<VisualState x:Name="ShowState">
...
</VisualState>
<VisualState x:Name="HideState">
...
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
Lorsque ...
représente le Storyboard
pour chaque transition.
J'ai juste repéré une erreur dans les définitions Storyboard
et pour l'instant je vais devoir répliquer le correctif dans tous les fichiers. Il serait préférable qu'il n'y ait qu'une seule définition du Storyboard
qui pourrait être référencée dans chaque fichier.
J'ai cherché toute la matinée pour la bonne syntaxe mais n'ai eu aucune chance quoi que ce soit.
Comment puis-je partager ce VisualStateManager
entre tous nos fichiers XAML?
Il semble que vous souhaitiez encapsuler le 'comportement' dans un contrôle personnalisé. De cette façon, vous réutiliserez simplement le contrôle au besoin, ce qui encapsulera votre Storyboard, fournissant ainsi un point de référence unique pour résoudre les problèmes au fur et à mesure qu'ils surviennent. Je suppose que c'est quelque chose qui ressemble à un Expander ou autre; fournir des fonctionnalités communes à tous les enfants de ce conteneur. –