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 :

Grid créé dynamiquement et problème d'évènements


Sujet :

Silverlight

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Par défaut Grid créé dynamiquement et problème d'évènements
    Bonjour tout le monde, je suis sur un problème depuis 2 jours qui me rend fou !

    Je vais expliquer avec 2 exemples :

    Si je créé dans le XAML en "dur" 3 Grid :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
        <Grid x:Name="LayoutRoot" 
            Background="BurlyWood" 
            Width="1000" Height="Auto"
            MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="40"/>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Grid x:Name="GridOne"
                 Grid.Column="0"
                 Grid.Row="0"
                 Background="CornflowerBlue"
                 Margin="5,5,5,5"
                 MouseLeftButtonUp="GridOne_MouseLeftButtonUp">
                <Grid.ColumnDefinitions>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="40"/>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
            </Grid>
            <Grid x:Name="GridTwo"
                 Grid.Column="1"
                 Grid.Row="0"
                 Background="DarkSeaGreen"
                 Margin="5,5,5,5"
                MouseLeftButtonUp="GridTwo_MouseLeftButtonUp">
                <Grid.ColumnDefinitions>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="40"/>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
     
            </Grid>
        </Grid>

    avec leurs events MouseLeftButtonUp associés

    Code c# : 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
     
            private void LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                    e.Handled = true;
     
            }
     
            private void GridOne_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                    e.Handled = true;
     
            }
     
            private void GridTwo_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                    e.Handled = true;
     
            }

    Aucun problème ! Les events sont bien bindés et le e.Handled déclenché au clic sur toutes les Grid.

    Maintenant si je ne garde que la premiere Grid(LayoutRoot), et que je décide d'ajouter une Grid à la volée dans le code behind comme ceci :

    Code c# : 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
     
                Grid GridOne = new Grid();
                GridOne.Name = "GridOne";
                GridOne.MouseLeftButtonUp += new MouseButtonEventHandler(GridOne_MouseLeftButtonUp);
                LayoutRoot.Children.Add(GridOne);
                Grid.SetColumn(GridOne, 0);
                Grid.SetRow(GridOne, 0);
     
                RowDefinition rd = new RowDefinition();
                rd.MaxHeight = 40;
                RowDefinition rd2 = new RowDefinition();
                rd2.MaxHeight = 40;
                RowDefinition rd3 = new RowDefinition();
     
                GridOne.ShowGridLines = true;
                GridOne.MaxHeight = 400;
                GridOne.MaxWidth = 400;
     
                GridOne.RowDefinitions.Add(rd);
                GridOne.RowDefinitions.Add(rd2);
                GridOne.RowDefinitions.Add(rd3);

    Plus rien ne marche ! si je fais un clic gauche sur la LayoutRoot aucun évènement n'est déclenché, il faut cliquer sur un enfant(ici la grille rajoutée a la volée) pour que l'évenement LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) soit déclenché...

    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Cela est normal si ce n'est ton LayoutRoot qui est abonné à l'évènement mais les enfants que t'as créés.

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 2
    Par défaut
    LayoutRoot est abonné à l'évènement LayoutRoot_MouseLeftButtonUp

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Grid x:Name="LayoutRoot" 
            Background="BurlyWood" 
            Width="1000" Height="Auto"
            MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">

    Et GridOne est abonné à l'évènement GridOne_MouseLeftButtonUp, donc je ne comprends pas pourquoi quand je clic sur GridOne pourquoi l'évènement LayoutRoot est appellé, et si je clic sur LayoutRoot rien n'est appellé...

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2009, 14h23
  2. Problème sur évènement
    Par Azharis dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 16h36
  3. Problème avec évènement ..
    Par questionneuse dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2005, 18h47
  4. Réponses: 11
    Dernier message: 03/06/2005, 15h38
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 08h46

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