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
Partager