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 :

Positionnement des éléments


Sujet :

Silverlight

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Positionnement des éléments
    Bonjour

    Je suis novice en SilverLight et je procédère à quelques tests avant de me lancer dans le vrai projet.
    Dans un autre topic j'ai un socuis d'URL d'image, mais ma question ici est indépendante de ça puisque je choisi temporairement la méthode de l'URL vers un serveur. Il sera toujours temps de changer aprés.

    J'ai lu des tutos et j'a compris quelques trucs déjà. Mais je crois que là, je mélange des choses ou j'ai pas tout saisi, faut dire aussi qu'il y a en trop !

    Je voudrais mettre un bouton en haut à gauche de mon SilverLght et une image juste en dessous, collée à gauche.
    J'ai fait ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <UserControl x:Class="MonHello.Page"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width="400" Height="300" Background="Black">
        <Grid x:Name="LayoutRoot" Background="Aqua" HorizontalAlignment="Left" VerticalAlignment="Top" Width="400" Height="300">
            <Button x:Name="btn1" Content="Start" Width="100" Height="50" Click="btn1_Click" Canvas.Left="0" Canvas.Top="0"></Button>
            <Image x:Name="img1" Stretch="Uniform" Source="http://localhost/App_Themes/GaelDevin/img.png" Height="50" Canvas.Left="0" Canvas.Top="50"></Image>
        </Grid>
    </UserControl>
    Et ça m'affiche le bouton et l'image au milieu du centre, l'image par dessus le bouton.

    Subsidiairement j'ai remaqué que dans le CodeBehind on ne pouvait pas accéder à la propriété canvas.top et canvas.left du bouton ou de l'image. Je dis ça car ma quetion suivante sera : comment je fais bouger l'image en cliquant sur le bouton ?

    Vous pouvez m'aider ?

  2. #2
    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
    Re,

    En il existe différents types de container pour positionner tes éléments, il serait utile de lire le chapitre les concernants sur ce tuto par exemple :

    http://broux.developpez.com/articles...silverlight-2/

    L'idéal est peut-être de commencer par une Grid, en fait dans ton exemple, tu positionnes tes éléments par rapport a un Canvas alors qu'ils se trouvent dans une Grid.

    Donc (répéter le tuto), tu dois définir tes lignes et tes colonnes sur ta Grid et ensuite choisir dans quelle cellule tu souhaites placer ton composant avec les propriétés Grid.Row et Grid.Column, n'hésites pas a mettre la propriété de ta Grid ShowGridLine à true afin de voir ce que tu fais pendant le développement ...

    Ensuite il faudra donner un nom à tes composants (x:Name) et dans le code behind faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Composant.SetValue(Grid.ColumnProperty, 1);
    Composant.SetValue(Grid.RowProperty, 4)
    Pour changer leur valeur.

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide et surtout pour le tuto, j'en avais marre de lire de l'anglais.....

    A la lumière de ce tuto, je sais maintenant que ce que je veux est un Canvas.

    Du coup, c'est beaucoup mieux organisé.

    Maintenant, problème suivant : dans le CodeBehind je n'accède pas à la propriété Canvas.Top. Comment je peux faire pour changer ça.

    Ce que je voudrais c'est en cliquant sur le bouton que l'image change de position.

    Peux tu m'aider ?

  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
    Donne un nom à ton élément à l'aide de x:Name="NComposant"

    Compile le projet puis ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NComposant.SetValue(Canvas.Top, 50)

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci, ça marche vachement mieu comme ça.

    Pour les accrocs de VB ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img1.SetValue(Canvas.LeftProperty, l)
    (y a une petite différence avec le C#)
    img1 étant le x:name d'une image posé dans un Canvas

    Est ce que je peux te solliciter pour la suite ?

    Parce quej'ai fait un truc qui à l'air de marcher, mais ça va trop vite. Mon idée c'est de générer du mouvement, du coup je change le Top et le Left en fonction de différents paramettres.
    Pour l'instant j'ai fait une boucle de 10 itérations et je crois que chauqe pas change la position de l'image, mais ça va trop vite, on à as le temps de voir.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim t, l As Double
            t = 50
            l = 0
     
            For i As Integer = 0 To 10
                img1.SetValue(Canvas.TopProperty, t)
                img1.SetValue(Canvas.LeftProperty, l)
                t += 5
                l += 5
    'Mettre un WAIT
            Next
    Ce que je n'arrive pas à trouver c'est une commande qui ferais attendre la boucle là où j'ai mis mon commentaire. Connais tu une commande de ce type ?

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Je vasi boucler ce topic car je me rends compte qu'il ne correspond plus au titre et au sujet traité.

    Je vais en rouvrir un autre pour être plus propre.

  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
    Quand je parlais de donner un Name a ton composant, il s'agissait biensûr de ton image donc, il n'y a pas de différence entre le VB et le C# pour cette partie.

    En fait pour ton mouvement, tu dois utiliser un StoryBoard qui représente en fait une animation que tu vas pouvoir lancer depuis le code behind ou non et qui est configurable, au niveau de la durée, etc

    Je vais t'écrire le code pour celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <Canvas x:Name="LayoutRoot" Background="White">
            <Image x:Name="img1" Height="50" Width="50" Source="metrum.png" Canvas.Left="0">
                <Image.Resources>
                    <Storyboard x:Name="SB1">
                        <DoubleAnimation Duration="00:00:10" From="0" To="200" Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="img1"/>
                    </Storyboard>
                </Image.Resources>
            </Image>
        </Canvas>
    Donc en gros, la propriété Canvas.Left de ton img1 va être modifiée progressivement de 0 à 200 en 10 secondes.

    Pour lancer ton StroyBoard dans ton code Behind, tu peux faire SB1.Begin();

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci poiur ton bout de code.
    Je vais le tester de ce pas.

    Au sujet de la différence entre VB et C# je parlais de la propriété elle même.
    En C# on appelle le Canvas.Top alors qu'en VB on appelle le Canvas.TopProperty. Petite subtilité perturbante quand t'as pas beaucoup d'expérience, je pense surtout aux jeunes frais moulu du BTS.

    Merci pour tout

  9. #9
    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
    Non, en fait il s'agit d'une erreur de ma part, j'avais tapé de mémoire et avait oublié le Property.

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

Discussions similaires

  1. Positionner des éléments de formulaire sur une grille
    Par Jiyuu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/08/2009, 16h49
  2. jPanel, et positionnement des éléments autour
    Par knice dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 04/04/2009, 17h10
  3. Pb pour positionner des éléments
    Par cissou06 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/07/2007, 18h55
  4. Positionner des éléments dans une cellule de tableau
    Par Rémy29 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/07/2006, 17h33
  5. Positionner des éléments dans un formulaire
    Par Choupinou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/07/2006, 16h36

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