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 :

questions comportements contrôles


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut questions comportements contrôles
    Bonjour tout le monde,

    voilà je viens vers vous car je rencontre quelques problèmes en wpf.

    Je suis en train d'essayer de créer un système de transition (une sorte de slide sur les diaporamas powerpoint), afin de présenter le contenu de mon application.

    Pour que cela soit plus clair, voilà un petit schéma :



    Pour faire ceci, voilà mon code XAML :

    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
     
     <Grid>
            <Grid Background="Red" Width="200" Height="200">
                <Grid Background="Beige" Name="pnl1">
                    <Grid.Triggers>
                        <EventTrigger RoutedEvent="MouseEnter">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ThicknessAnimation Storyboard.TargetName="pnl1" Storyboard.TargetProperty="Margin" From="0,200,0,0" To="0,00,0,0" ></ThicknessAnimation> 
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Grid.Triggers>
                    <Button>Test</Button>
                </Grid>
            </Grid>
     
        </Grid>
    Le problème que je rencontre, c'est que le panel en mouvement ne garde pas une taille fixe. En effet, ça taille est celle qui est affichée. Si vous testez le code que je vous ai donné, vous verrez que le bouton se redimensionne.

    D'où ma question : connaitriez-vous un moyen afin de régler ce problème ?

    Je vous remercie d'avance pour votre aide
    Cordialement

    Finality

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il faut définir une TranslateTransform sur le contrôle et animer cette transformation dans ton storyboard.

  3. #3
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut
    Salut Tomlev

    Tout d'abord, merci pour ta réponse

    alors j'ai testé ce que tu m'as dit, mais j'ai toujours un problème.... Tout d'abord voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <Grid>
            <Grid Background="Red" Width="200" Height="200">
                <Grid Background="Beige" Name="pnl1">
     
                    <Button>Test</Button>
                </Grid>
            </Grid>
     
        </Grid>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public test()
            {
                InitializeComponent();
                TranslateTransform tt = new TranslateTransform();
     
                //pnl1.Margin = new Thickness (0, 150, 0, 0);
                //DoubleAnimation datt1 = new DoubleAnimation(-200, new Duration(new TimeSpan(0, 0, 1)));
                DoubleAnimation datt1 = new DoubleAnimation(200, new Duration(new TimeSpan(0, 0, 1)));
     
                tt.BeginAnimation(TranslateTransform.YProperty, datt1);
                pnl1.RenderTransform = tt;
            }
    1er problème : si tu lances le code tel quel, tu vois bien que la translation à lieu, mais mon panel dépasse de la grid qui le contient...

    2eme problème : si tu utilises les 2 lignes commentées (slide vers le haut), tu vois bien que rien ne se passe. J'en ai conclu que wpf utilise la partie affichée du contrôle pour la translation. hors, dans ce cas précis, aucune partie de mon contrôle n'est affichée...

    Aurais-tu une idée pour résoudre ces problèmes ?

    Une fois de plus merci
    Cordialement

    Finality

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    D'abord, il faut mettre la transformation sur la Grid dès le départ, et en aucun cas l'affecter à la Grid après avoir lancé l'animation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <Grid>
            <Grid Background="Red" Width="200" Height="200">
                <Grid Background="Beige" Name="pnl1">
                    <Grid.RenderTransform>
                        <TranslateTransform />
                    </Grid.RenderTransform>
                    <Button>Test</Button>
                </Grid>
            </Grid>
     
        </Grid>
    Ensuite, plutôt que de créer une nouvelle TranslateTransform, récupère celle de la Grid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public test()
            {
                InitializeComponent();
                TranslateTransform tt = pnl1.RenderTransform as TranslateTransform;
     
                //pnl1.Margin = new Thickness (0, 150, 0, 0);
                //DoubleAnimation datt1 = new DoubleAnimation(-200, new Duration(new TimeSpan(0, 0, 1)));
                DoubleAnimation datt1 = new DoubleAnimation(200, new Duration(new TimeSpan(0, 0, 1)));
     
                tt.BeginAnimation(TranslateTransform.YProperty, datt1);
            }
    J'ai pas testé tout ça, pas le temps... mais ça devrait peut-être aller un peu mieux

  5. #5
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Par défaut
    Re Salut tomlev

    oui c'est vrai que as raison, mon code était pas très logique

    Sinon, ta solution a exactement le même comportement que celle que j'ai donné, donc toujours les mêmes problèmes...

    T'es pas obligé de me répondre dans la minute tu sais si tu as pas le temps, tu peux le faire après, c'est déjà sympa de ta part de m'aider

    Encore merci, en espérant que tu ne sois pas à court d'idée

  6. #6
    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
    Par défaut
    Salut,

    Est-ce que cela ne viendrait pas de la propriété RenderTransformOrigin de la Grid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <Grid>
            <Grid Background="Red" Width="200" Height="200">
                <Grid Background="Beige" Name="pnl1" RenderTransformOrigin="0.5, 0.5" >
                    <Grid.RenderTransform>
                        <TranslateTransform />
                    </Grid.RenderTransform>
                    <Button>Test</Button>
                </Grid>
            </Grid>
            
        </Grid>
    Essaie de jouer avec.

Discussions similaires

  1. Question comportement Deplhi
    Par peter27x dans le forum Débuter
    Réponses: 3
    Dernier message: 11/02/2009, 13h45
  2. question comportement IE flash
    Par MortDansLAme dans le forum Intégration
    Réponses: 0
    Dernier message: 22/05/2008, 10h28
  3. Questions sur contrôle onglet
    Par valerie26 dans le forum IHM
    Réponses: 5
    Dernier message: 08/09/2006, 11h01
  4. Réponses: 3
    Dernier message: 19/08/2005, 15h18
  5. question sur le comportement des threads
    Par rose-bonbon dans le forum CORBA
    Réponses: 4
    Dernier message: 27/10/2004, 18h00

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