Bonjour,
j'ai un problème avec le gotFoc et je vais essayer de l'expliquer de la façon suivante :
le premier est le cas où ça marche bien :
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
45
46
47
48
49
50
51
52
53
54
55 <my:FloatingWindow x:Class="FloatingWindowControl.ListeDesDiplomes" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:my="clr-namespace:SilverFlow.Controls;assembly=SilverFlow.Controls" Width="1200" Height="555" IconText="Liste des diplômes"> <my:FloatingWindow.Title> <StackPanel Orientation="Horizontal"> <Image Source="/FloatingWindowControl;component/image.jpg" Margin="0,0,6,0" Height="22" Width="52" /> <TextBlock Text="Liste des diplômes" /> </StackPanel> </my:FloatingWindow.Title> <Border x:Name="LayoutRoot" Margin="4,0,4,4"> <Grid> <sdk:DataGrid Name="dataGrid1" Width="1200" HorizontalAlignment="Left" AutoGenerateColumns="False" GridLinesVisibility="Vertical" HeadersVisibility="All" ColumnWidth="100" RowHeight="40" GotFocus="dataGrid1_GotFocus" SelectionChanged="dataGrid1_SelectionChanged" Margin="0,60,0,51"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Binding="{Binding civilite}" x:Name="colonneCivilite" Header="Civilité" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding nom}" x:Name="colonneNom" Header="Nom" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding prenom}" x:Name="colonnePrenom" Header="Prénom" Width="Auto" /> <sdk:DataGridTextColumn Binding="{Binding diplome}" x:Name="diplome" Header="Diplôme" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding mention}" x:Name="colonneMention" Header="Mention" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding annee_universitaire}" Header="Année" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding ufr}" Header="U.F.R." x:Name="colonneUFR" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding lieu_naissance}" Header="né(e) à" x:Name="colonneLieuNaissance" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding j_naissance}" Header="jour" x:Name="colonneJourNaissance" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding m_naissance}" Header="mois" x:Name="colonneMoisNaissance" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding a_naissance}" Header="année" x:Name="colonneAnNaissance" Width="Auto"/> <sdk:DataGridTextColumn Binding="{Binding date_arrete}" Header="Date arrêté" x:Name="colonneArrete" Width="Auto" /> <sdk:DataGridTextColumn Binding="{Binding num_diplome_saisi}" Header="N° Diplôme" x:Name="colonneNumDiplome" Width="Auto" /> <sdk:DataGridTextColumn Binding="{Binding num_diplome}" Header="N° Diplome" x:Name="colonneNumDiplomeE" Width="Auto" Visibility="Collapsed"/> </sdk:DataGrid.Columns> </sdk:DataGrid> <Button Content="Valider pour modifier" Height="23" HorizontalAlignment="Left" Margin="6,474,0,0" Name="button1" VerticalAlignment="Top" Width="130" Click="ModificationDiplome_Click" /> <Button Content="Annuler" Height="23" HorizontalAlignment="Right" Margin="0,474,916,0" Name="button2" VerticalAlignment="Top" Width="130" Click="button2_Click" /> </Grid> </Border> </my:FloatingWindow>
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void dataGrid1_GotFocus(object sender, RoutedEventArgs e) { WebClient wc = new WebClient(); wc.OpenReadCompleted += GetEtudiantOpenReadCompleted; wc.OpenReadAsync(new Uri(_CallbackUrl + "?listeetudiant=true")); }
En fait, dans ce cas qui fonctionne bien, ma procédure php retourne une liste de diplômes et les affiche correctement. Lorsque j'appelle une fenêtre de saisie pour de nouveaux diplômes et que je la ferme après validation du nouveau diplôme, lorsque ma dataGrid a le focus, elle affiche les nouvelles saisies.
Maintenant le cas qui ne marche pas et qui devrait, selon moi marcher. Je saisis des arrêtés mais lorsque ma fenêtre ajoutArrete a le focus, l'affichage avec les nouvelles saisies se fait sans je puisse faire le drag and drop. J'ai l'impression que le gotFocus agit à chaque fois que je clique sur la listBox et que je ne peux pas faire glisser mon enregistrement :
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 <my:FloatingWindow x:Class="FloatingWindowControl.AjoutArrete" xmlns:toolKit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:my="clr-namespace:SilverFlow.Controls;assembly=SilverFlow.Controls" Width="1201" Height="488" IconText="Liaison d'un arrêté à un diplôme"> <my:FloatingWindow.Title> <StackPanel Orientation="Horizontal"> <Image Source="/FloatingWindowControl;component/image.jpg" Margin="0,0,6,0" Height="22" Width="52" /> <TextBlock Text="Liaison d'un arrêté à un diplôme" /> </StackPanel> </my:FloatingWindow.Title> <Grid x:Name="LayoutRoot1" Background="White" GotFocus="LayoutRoot_GotFocus"> <Grid Height="161" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="1175"> <Grid.ColumnDefinitions> <ColumnDefinition Width="220*" /> <ColumnDefinition Width="955*" /> </Grid.ColumnDefinitions> <Grid Height="161" HorizontalAlignment="Left" Name="grid2" VerticalAlignment="Top" Width="220" Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="32*" /> <RowDefinition Height="129*" /> </Grid.RowDefinitions> <sdk:Label Grid.RowSpan="2" Height="28" HorizontalAlignment="Left" Content="U.F.R." VerticalAlignment="Top" Width="120" Grid.Row="0" /> <ListBox Name="listBoxUFR" VerticalAlignment="Bottom" HorizontalAlignment="Left" Grid.Row="1" SelectionChanged="listBoxUFR_SelectionChanged" Margin="1,0,0,9" Width="219" Height="120"> <ListBox.Items> <ListBoxItem Content="Sciences" /> <ListBoxItem Content="Lettres et Langues" /> <ListBoxItem Content="Droit et Sciences Eco" /> <ListBoxItem Content="I.U.T." /> </ListBox.Items> </ListBox> </Grid> <Grid Height="155" HorizontalAlignment="Left" Name="grid3" VerticalAlignment="Top" Width="955" Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="56*" /> <RowDefinition Height="105*" /> </Grid.RowDefinitions> <sdk:Label Height="28" HorizontalAlignment="Left" Grid.Row="0" Content="Liste des diplômes par U.F.R." VerticalAlignment="Top" Width="252" /> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBoxDiplomesLus" VerticalAlignment="Bottom" Width="756" SelectedValuePath="diplome" SelectionChanged="comboBoxDiplomesLus_SelectionChanged" > <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding diplome}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> <sdk:DataGrid AutoGenerateColumns="False" Grid.Row="1" Height="98" HorizontalAlignment="Left" Name="dataGridArretesDansDiplome" VerticalAlignment="Top" Width="756"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Binding="{Binding libelleArrete}" x:Name="colonneLibelle" Header="Libellé"/> </sdk:DataGrid.Columns> </sdk:DataGrid> </Grid> </Grid> <Grid Height="211" HorizontalAlignment="Left" Margin="13,192,0,0" Name="grid4" VerticalAlignment="Top" Width="1174"> <Grid.RowDefinitions> <RowDefinition Height="24*" /> <RowDefinition Height="187*" /> </Grid.RowDefinitions> <Grid Height="24" HorizontalAlignment="Left" Name="grid5" VerticalAlignment="Top" Width="1174" Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="530*" /> <ColumnDefinition Width="644*" /> </Grid.ColumnDefinitions> <sdk:Label Height="24" HorizontalAlignment="Left" Content="Liste des arrêtés disponibles dans la base" Grid.Column="0" VerticalAlignment="Top" Width="530" /> <sdk:Label Height="24" HorizontalAlignment="Left" Content="Liste des arrêtés associés à ce diplôme " Grid.Column="1" VerticalAlignment="Top" Width="530" /> </Grid> <Grid Height="181" HorizontalAlignment="Left" Grid.Row="1" Name="grid6" VerticalAlignment="Top" Width="1168"> <StackPanel Orientation="Horizontal" Margin="10" Grid.Row="0"> <toolKit:ListBoxDragDropTarget AllowDrop="True" > <ListBox x:Name="listeArretesListBoxMain" BorderThickness="5" DisplayMemberPath="libelleArrete" Height="147" Width="494"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </toolKit:ListBoxDragDropTarget> <TextBlock Width="20" /> <toolKit:ListBoxDragDropTarget AllowDrop="True"> <ListBox DisplayMemberPath="libelleArrete" BorderThickness="4" Height="147" Width="453" HorizontalAlignment="Left"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </toolKit:ListBoxDragDropTarget> </StackPanel> </Grid> </Grid> </Grid> </my:FloatingWindow>
avec dans AjourArrete.xaml.cs :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private void LayoutRoot_GotFocus(object sender, RoutedEventArgs e) { WebClient wc = new WebClient(); wc.OpenReadCompleted += GetArreteOpenReadCompleted; wc.OpenReadAsync(new Uri(_CallbackUrl + "?listeArretes")); }
j'ai l'impression de faire correctement les choses mais ça marche dans un cas mais pas dans l'autre. Merci de me donner le bon conseil. Ca fait 3 jours que j'y travaille mais je ne trouve rien de bon.
EDIT
avec :
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 private void GetArreteOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Error != null || e.Cancelled) { MessageBox.Show("Erreur lors de la lecture des arrêtés"); return; } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MesArretes)); monArrete = serializer.ReadObject(e.Result) as MesArretes; listeArretesListBoxMain.ItemsSource = monArrete.mesArretes; DataContext = new ObservableCollection<Etudiant>(); ObservableCollection<Arretes> _MyObject = new ObservableCollection<Arretes>(); for (int i = 0; i < monArrete.mesArretes.Length; i++) { _MyObject.Add(new Arretes { libelleArrete = monArrete.mesArretes[i].libelleArrete }); } listeArretesListBoxMain.ItemsSource = _MyObject; }
Partager