IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

VisualStateManager sur une ChildWindow


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Par défaut VisualStateManager sur une ChildWindow
    Bonjour à tous !

    Voilà je suis en train de voir les différentes possibilités de Blend et je me heurte à un problème.
    Sous Visual Studio j'ai crée une ChildWindow tout ce qu'il y a de plus simple et j'ai viré la fermeture de la ChildWindow sur clique du bouton OK ou Cancel.
    J'ouvre ensuite mon projet sous Blend 4 RC et je me dis "tiens j'aimerai bien mettre un effet de rotation sur le bouton OK lors de son clic. Je clique sur le bouton OK, je vais dans l'onglet States et je rajoute un StateGroup. Je rajoute ensuite un State que je nomme "Loaded". Pour ce State je donne une valeur de 180° de rotation sur axe Y à mon bouton OK après 1 seconde. Lorsque je clique sur lecture ça fonctionne nickel.
    Ensuite je retourne sous Visual Studio, et dans la méthode appelé par le clic du bouton OK je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VisualStateManager.GoToState(this, "Loaded", true);
    Et malheureusement rien ne se passe. Or cette méthode fonctionne très bien pour une page Silverlight classique. Mais alors où est le problème ? Quelqu'un aurait-il ou elle la réponse ?

    Merci d'avance pour toutes vos réponses en tout cas !!!

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    Ou est stocké ton VisualState ? Il me semble que si c'est dans LayoutRoot il faut que ton GoToState pointe vers LayoutRoot et non this.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Par défaut
    Voilà le code généré par Blend (ce sera plus rapide que de te filer une réponse qui sert à rien je pense...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <sdk:ChildWindow	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"	xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"	x:Class="CardGameTest.ChildWindow1"
    	Title="ChildWindow1"
    	Width="400" Height="300">
    	<Grid x:Name="LayoutRoot">
    		<Grid.RowDefinitions>
    			<RowDefinition />
    			<RowDefinition Height="Auto" />
    		</Grid.RowDefinitions>
     
    		<VisualStateManager.CustomVisualStateManager>
    			<ei:ExtendedVisualStateManager/>
    		</VisualStateManager.CustomVisualStateManager>
    		<VisualStateManager.VisualStateGroups>
    			<VisualStateGroup x:Name="VisualStateGroup">
    				<VisualState x:Name="Loaded">
    					<Storyboard>
    						<DoubleAnimation Duration="0:0:1" To="180" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="OKButton" d:IsOptimized="True"/>
    					</Storyboard>
    				</VisualState>
    			</VisualStateGroup>
    		</VisualStateManager.VisualStateGroups>
     
    		<Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="75" Height="23" Margin="0,0,79,0" HorizontalAlignment="Right" Grid.Row="1" >
    			<Button.Projection>
    				<PlaneProjection/>
    			</Button.Projection>
    		</Button>
    		<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Grid.Row="1" />
    	</Grid>
    </sdk:ChildWindow>

  4. #4
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Il est bien dans LayoutRoot donc je pense que ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VisualStateManager.GoToState(this.LayoutRoot, "Loaded", true);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Par défaut
    Je viens de tester ta ligne. Le debugger m'envoie bouler en disant que this.LayoutRoot est un Controls.LayoutRoot alors qu'il attend un Controls.Control. Y'a un moyen de caster un LayoutRoot en Control ?

  6. #6
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    ARRRG ! oui c'est vrai Grid est un Panel et pas un Control.Tu peux toujours utiliser un ContentControl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Grid x:Name="LayoutRoot">
       <ContentControl x:Name="MonContentControl">
     
          <VisualStateManager...>
          </VisualStateManager...>
     
       </ContentControl>
    </Grid>
    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VisualStateManager.GoToState(this.MonContentControl, "Loaded", true);
    Pas très élégant mais ça devrait marcher.

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  3. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36
  4. Rendre le curseur invisible sur une fenêtre donnée
    Par Meuhmeuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/11/2002, 12h25
  5. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo