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

Windows Presentation Foundation Discussion :

StoryBoard introuvable dans le code behind


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut StoryBoard introuvable dans le code behind


    Je viens du Silverlight et arrivé dans une application WPF, je rencontre une erreur, Lorsque je met un StoryBoard en Ressources d'un composant, je lui donne un nom et ensuite impossible d'y accéder depuis le code behind.

    Le nom de mon StoryBoard n'existe pas dans le code behind alors qu'en Silverlight ça fonctionnait très bien ... (j'ai évidemment compilé entre temps)

    Quelqu'un peut-il m'aider ? Le système d'appel est-il différent ?

    Merci pour votre aide ...

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Tu peux récupérer et lancer une storyBoard depuis le code behind ainsi :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Storyboard sb = (Storyboard)( FindResource( "myStoryBoard" ) );
      sb.Begin( this );

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    C'est en effet une différence avec SL: avec WPF, les ressources ne sont pas directement accessible dans le code behind, il faut passer par les méthodes FindResource/TryFindResource

  4. #4
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    Ok, merci, je vais essayer

  5. #5
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    En effet, c'était bien ça, ca fonctionne maintenant en recherchant avec la Key mais un autre problème se pose à moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <Window.Resources>
            <Storyboard x:Key="TurnLeft" FillBehavior="HoldEnd" BeginTime="0:0:0" >
                <Rotation3DAnimationUsingKeyFrames BeginTime="0:0:0" Duration="0:0:2" Storyboard.TargetName="BoxOR9" Storyboard.TargetProperty="(Model3DGroup.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)">
                    <LinearRotation3DKeyFrame KeyTime="0:0:1.5">
                        <LinearRotation3DKeyFrame.Value>
                            <AxisAngleRotation3D x:Key="CubeRotate" Angle="90" />
                        </LinearRotation3DKeyFrame.Value>
                    </LinearRotation3DKeyFrame>
                </Rotation3DAnimationUsingKeyFrames>
            </Storyboard>
        </Window.Resources>
    Comment puis-je faire pour récupérer mon objet CubeRotate afin de changer son angle ?

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Une fois que tu as le Storyboard, tu peux accéder à ses enfants

    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
    var sb = this.TryFindResource("TurnLeft") as Storyboard;
                if (sb != null)
                {
                    var rotation = sb.Children[0] as Rotation3DAnimationUsingKeyFrames;
                    if(rotation != null)
                    {
                        var linearRotation = rotation.KeyFrames[0] as LinearRotation3DKeyFrame;
                        if(linearRotation != null)
                        {
                            var axisAngleRotation = linearRotation.Value as AxisAngleRotation3D;
                            if(axisAngleRotation != null)
                            {
                                axisAngleRotation.Angle = 180;
                            }
                        }
                    }
                }

  7. #7
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    Ah ouais, ok, waw, ca marche nickel comme ça !!! ;-)

    Merci pour ton aide et ta rapidité de réponse.

    Cependant, le trouve le mécanisme assez lourd, c'est dommage qu'il n'est pas possible d'accéder aux ressources directement comme en SL.

    Enfin, je ferai avec :-)

    Encore merci, bon week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [.net]Appeler une fonction située dans le code behind
    Par anto dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/05/2009, 13h05
  2. Réponses: 2
    Dernier message: 05/04/2007, 14h53
  3. Réponses: 2
    Dernier message: 30/03/2007, 22h14
  4. Réponses: 1
    Dernier message: 20/01/2007, 11h47
  5. Réponses: 6
    Dernier message: 09/01/2007, 14h12

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