5 votes

WPF/Silverlight States - Activation depuis XAML ?

Une question rapide : Est-il possible d'activer un état de vue à partir de XAML ? Je n'ai pu en activer qu'un depuis CS, en utilisant la méthode VisualStateManager.GotoState(). Cela résoudrait certains de mes problèmes MVVM si c'était facilement possible.

Remerciements

7voto

Dan Auclair Points 3063

Si vous connaissez les comportements, les déclencheurs et les actions Blend, il existe une action GoToStateAction qui fait partie de l'espace de noms Microsoft.Expression.Interactivity.Core. Vous devrez faire référence aux assemblages d'interactivité qui font partie de l'espace de noms Microsoft.Expression.Interactivity.Core. SDK Blend .

Une fois les références mises en place, il suffit de spécifier l'action GoToState pour qu'elle réagisse à une sorte de déclencheur... le tout en XAML. Voici un exemple qui déclenche l'action à partir de l'événement Loaded à l'aide d'un EventTrigger :

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions">
    <Grid x:Name="LayoutRoot">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Loaded">
                <ic:GoToStateAction StateName="MyVisualState"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        ...
    </Grid>
</UserControl>

Plus d'informations et de tutoriels sur l'action spécifique GoToState aquí .

EDIT : Cette réponse est spécifique à Silverlight, je ne suis pas sûr qu'elle soit disponible pour WPF.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X