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 :

Animer la propriété Visibility


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut Animer la propriété Visibility
    Bonjour,
    J'ai deux UserControls (Control1, Control2) dans une fenêtre. Le premier à sa propriété "Visibility" à Visible et le second à "Hidden" au lancement de l'application.
    Lorsque je clique sur un bouton, je voudrais faire disparaitre mon premier UserControl et faire apparaitre le second.
    j'ai donc pensé animer leurs propriétés "Visbility".
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Storyboard x:Key="AnimateVisibility">
                <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Control1" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00.2000000" Value="{x:Static Visibility.Collapsed}"/>
                </ObjectAnimationUsingKeyFrames>
                <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Control2" Storyboard.TargetProperty="(UIElement.Visibility)">
                    <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>

    Lorsque je lance l'animation, j'ai le message d'erreur suivant :
    Impossible d'animer la propriété sur un(e) 'Visibility' d'un(e) 'Monprojet.Control1' à l'aide d'un(e) 'System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames'. Pour plus d'informations, consultez l'exception interne.
    Une idée pourquoi ?

  2. #2
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Ca me parait bien. Tu utilises quel code pour déclencher l'animation ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Est tu sûr que ton Control1 possède une propriété Visibility ?

    le message d'erreur semble indiquer le contraire.

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Est tu sûr que ton Control1 possède une propriété Visibility ?

    le message d'erreur semble indiquer le contraire.
    Si c'est effectivement dérivé de UserControl comme dit plus haut, il devrait y avoir la propriété.

  5. #5
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut
    Voici le code que j'utilise pour lancer l'animation :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Storyboard AnimateVisibility= (Storyboard)FindResource("AnimateVisibility");
                AnimateVisibility.Begin();

    Mon UserControl possède bien cette propriété. Donc je ne comprends pas ce message d'erreur.
    J'ai contourné le problème en utilisant ce code et la propriété Opacity :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Storyboard x:Key="HideControl1" Storyboard.TargetName="Control1">
                <DoubleAnimation BeginTime="0:0:0" From="1" To="0" Duration="0:0:5" Storyboard.TargetProperty="Opacity"/>
            </Storyboard>
            <Storyboard x:Key="ShowControl2" Storyboard.TargetName="Control2">
                <DoubleAnimation BeginTime="0:0:0" From="0" To="1" Duration="0:0:5" Storyboard.TargetProperty="Opacity"/>
            </Storyboard>

    puis le code-behind suivant :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Storyboard HideControl1 = (Storyboard)FindResource("HideControl1 ");
                HideControl1 .Begin();
                Storyboard ShowControl2= (Storyboard)FindResource("ShowControl2");
                ShowControl2.Begin();

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Dans le premier message tu spécifie que:
    Citation Envoyé par méchante exception
    Impossible d'animer la propriété sur un(e) 'Visibility' d'un(e) 'Monprojet.Control1' à l'aide d'un(e) 'System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames'. Pour plus d'informations, consultez l'exception interne.
    Elle dit quoi l'exception interne?

  7. #7
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Par défaut
    En fait, j'ai trouvé le problème... A l'initialisation de l'application, je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Control1.Visibility = Visibility.Visible;
                Control2.Visibility = Visibility.Hidden;
    et je n'ai plus l'exeption.
    Ceci dit, cela m'aura permis de tester avec l'opacité et le résultat donne un "Fade" finalement pas mal pour remplacer une UserControl par un autre.
    Je vous remercie pour vos réponses.

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah oui en effet! Pour qu'une propriété soit animable, il faut qu'elle soit explicitement définie (soit dans le xaml soit dans le code-behind).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/12/2006, 12h37
  2. Réponses: 6
    Dernier message: 26/07/2006, 12h00
  3. utilisation propriété VISIBLE
    Par By-nôm dans le forum Access
    Réponses: 16
    Dernier message: 30/06/2006, 15h36
  4. Réponses: 2
    Dernier message: 06/06/2006, 13h09
  5. Propriété visible
    Par Mateache dans le forum Access
    Réponses: 20
    Dernier message: 07/03/2006, 19h10

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