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 :

Redimensionnement d'un grid


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut Redimensionnement d'un grid
    Bonjour à tous,

    Je travaille actuellement sur un petit projet wpf. Je souhaite 'poser' un quadrillage sur une image via une grid, je rempli ensuite ce quadrillage avec des boutons jusque là aucun problème tout fonctionne parfaitement.

    Mon soucis viens du fait que je souhaite à présent pouvoir redimensionner cette grille via deux scrollbar (pour la longueur/largeur des cellules) et je n'arrive pas à "rafraichir" la grid, ou même supprimer la grid pour ensuite en recréer une avec les nouvelles dimensions.

    Voici mon code pour créer et peupler la grid :

    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
    33
    34
    35
    36
         private void btnRemplirGrille_Click(object sender, RoutedEventArgs e)
            {
                int x = 0;
                int y = 0;
                double A = 0;
                A = scrollVertical.Value;
                B = scrollHorizontal.Value;
     
                for (int i = 0; i < 50; i++)
                {
                    // On défini les cellules de la grille
                    grid1.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = new GridLength(A * 100)
                    });
                    grid1.RowDefinitions.Add(new RowDefinition()
                    {
                        Height = new GridLength(B * 100)
                    });
                }
     
                btnTest = new Button[100, 100];
                for ( y = 0; y < 50; y++)
                {
                    for ( x = 0; x < 50; x++)
                    {
                        btnTest[x, y] = new Button();   
                        btnTest[x, y].Click += new RoutedEventHandler(Test);
                        btnTest[x, y].MouseEnter += new mouseEventHandler(MouseOver);                  
                        //On attache le boutton à sa place dans la grille                        
                        grid1.Children.Add(btnTest[x, y]);
                        Grid.SetRow(btnTest[x, y], x);
                        Grid.SetColumn(btnTest[x, y], y);
                    }
                }
    }
    J'ai fait plusieurs essaies avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void scrollHorizontal_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
            {
                grid1.UpdateLayout();
            }
    Mais à présent je suis à cours d'idée !

    Pourriez vous m'aider ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut
    Salut,
    je viens de faire un petit test rapidos
    Code xaml : 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
     
                <Grid Canvas.Left="0" Canvas.Top="0" Height="200" Name="grid1" Width="200">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="30" />
                        <RowDefinition Height="30" />
                        <RowDefinition Height="30" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="30" />
                        <ColumnDefinition Width="30" />
                        <ColumnDefinition Width="30" />
                    </Grid.ColumnDefinitions>
                    <Button Content="Button" Grid.Row="0" Grid.Column="0" />
                    <Button Content="Button" Grid.Row="1" Grid.Column="1" />
                    <Button Content="Button" Grid.Row="2" Grid.Column="2" />
                </Grid>

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                GridLength gl=new GridLength(50);
                foreach (ColumnDefinition cd in grid1.ColumnDefinitions)
                {
                    cd.Width = gl;
                }
                foreach (RowDefinition rd in grid1.RowDefinitions)
                {
                    rd.Height = gl;
                }
            }

    Et ma grille se redimensionne très bien

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2010, 14h54
  2. Mémoriser le redimensionnement d'un colonne d'un Grid
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 07/02/2009, 18h54
  3. Redimensionner des lignes de Grid en fonction du contenu
    Par Cecile5 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 03/12/2008, 14h07
  4. Réponses: 1
    Dernier message: 12/05/2008, 17h55
  5. [C#][XAML]Redimensionnement automatique Grid
    Par matb33 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 24/07/2007, 17h16

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