Bonjour,
j'ai un problème assez surprenant dans une datagrid en WPF.

J'ai lié à une DataGrid une liste d'objet1

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
            dg1.DataContext = List<objet1>
objet1
propriété11 Nom
propriété12 Id
propriété13 (est-ce que List<objet2> est vide ? true/false)
propriété14 (est-ce qu'il y a au moins un script dans l'objet2 ? true/false)
List<objet2>

objet2
propriété21 Nom
propriété22 Id
propriété23 (est-ce qu'il y a un script ? true/false)
propriété24 script

Ma grille contient un Expander pour afficher la List<objet2> dans une seconde grille

Je gère bien
- s'il n'y pas d'élément dans List<objet2>, mon Expander affiche un "-" et est dévalidé
- quand mon Expander est replié, s'il y a dans un des objet2 du code script, une étoile est affichée dans propriété14 (juste pour info)
- s'il y a des éléments, mon Expander se déroule bien et je peux voir la nouvelle grille

Dans cette seconde grille, je veux insérer un bouton, qui ouvrira une fenêtre pour afficher le contenu de la propriété22 (il peut y avoir de grand script d'où l'affichage dans une fenêtre).
Il y a une condition pour afficher le bouton, propriété23 doit être à true

Tout fonctionne bien, l'Expander affiche bien la grille, le bouton s'affiche bien s'il y a du code.

Par contre, quand j'insère dans le XAML la gestion de l'événement Click du bouton, ça me donne l'erreur "NullReferenceException" au chargement de la grille.
C'est la partie Click="Button_Click" qui pose problème, car quand je l'enlève tout fonctionne bien (par contre bien sûr je ne peux pas lancer ma fenêtre pour voir mon code)

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
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 
 <DataGrid AutoGenerateColumns="False" 
            Name="dG1" 
            ItemsSource="{Binding List<objet1>}" 
            CanUserAddRows="False" 
            CanUserDeleteRows="False" 
            CanUserResizeColumns="False" 
            CanUserResizeRows="False" 
            RowHeaderWidth="1" 
            ScrollViewer.CanContentScroll="False" 
            IsReadOnly="True">
 
    <DataGrid.Columns>
      <DataGridTextColumn Header="Nom" MinWidth="200" Width="Auto" Binding="{Binding propriété11 }" />
      <DataGridTextColumn Header="ID" HeaderStyle="{StaticResource HeaderRightAlign}" ElementStyle="{StaticResource RightAlignStyle}" Width="40" Binding="{Binding propriété12}" />
 
      <DataGridTemplateColumn Header="Script" Width="Auto">
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
 
            <ItemsControl ItemsSource="{Binding}">
              <TextBox BorderThickness="0" IsReadOnly="True">
                <TextBox.Style>
                  <Style TargetType="{x:Type TextBox}">
                    <Style.Triggers>
 
                      <DataTrigger Binding="{Binding Path=propriété14}" Value="true">
                        <Setter Property="Text" Value="*" />
                      </DataTrigger>
 
                    </Style.Triggers>
                  </Style>
                </TextBox.Style>
 
              </TextBox>
            </ItemsControl>
 
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
 
      <DataGridTemplateColumn Header="Etapes ..." Width="Auto" MinWidth="400">
 
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
 
            <ItemsControl ItemsSource="{Binding}">
              <Expander Name="WorkflowExpander">
 
                <Expander.Style>
                  <Style TargetType="{x:Type Expander}">
                    <Style.Triggers>
 
                      <DataTrigger Binding="{Binding Path=StatesFilled}" Value="true">
                        <Setter Property="IsEnabled" Value="True" />
                      </DataTrigger>
 
                      <DataTrigger Binding="{Binding Path=StatesFilled}" Value="false">
                        <Setter Property="IsEnabled" Value="False" />
                        <Setter Property="Header" Value=" -" />
                      </DataTrigger>
 
                      <Trigger Property= "IsFocused" Value="False">
                        <Setter Property="Background" Value="White" />
                        <Setter Property="BorderBrush" Value="White" />
                      </Trigger>
 
                      <Trigger Property= "IsExpanded" Value="True">
                        <Setter Property="Background" Value="LightGray" />
                        <Setter Property="BorderBrush" Value="White" />
                      </Trigger>
                      <Trigger Property= "IsExpanded" Value="False">
                        <Setter Property="Background" Value="White" />
                        <Setter Property="BorderBrush" Value="White" />
                      </Trigger>
 
                    </Style.Triggers>
                  </Style>
                </Expander.Style>
 
                <DataGrid AutoGenerateColumns="False" 
                          Name="dG2" 
                          DataContext="{Binding States}"
                          ItemsSource="{Binding}" 
                          CanUserAddRows="False" 
                          CanUserDeleteRows="False" 
                          CanUserResizeColumns="False" 
                          CanUserResizeRows="False" 
                          RowHeaderWidth="1" 
                          IsReadOnly="True">
 
                  <DataGrid.Columns>
 
                    <DataGridTemplateColumn Header="Nom" Width="Auto" MinWidth="200">
 
                      <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate >
 
                          <ItemsControl ItemsSource="{Binding}">
                            <TextBlock Text="{Binding propriété21}" />
                          </ItemsControl>
 
                        </DataTemplate>
                      </DataGridTemplateColumn.CellTemplate>
 
                    </DataGridTemplateColumn>
 
                    <DataGridTemplateColumn HeaderStyle="{StaticResource HeaderRightAlign}" Header="ID" Width="40">
 
                      <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate >
 
                          <ItemsControl ItemsSource="{Binding}">
                            <TextBlock Style="{StaticResource RightAlignStyle}" Text="{Binding propriété22}" />
                          </ItemsControl>
 
                        </DataTemplate>
                      </DataGridTemplateColumn.CellTemplate>
 
                    </DataGridTemplateColumn>
 
                    <DataGridTemplateColumn Header="VBScript" Width="Auto">
 
                      <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
 
                    <!-- pas d erreur -->
                          <!--<Button Width="30" Height="25" VerticalAlignment="Top">...
                            <Button.Style>
                              <Style TargetType="{x:Type Button}">
                                <Setter Property="Visibility" Value="Hidden" />
                                <Style.Triggers>
                                  <DataTrigger Binding="{Binding Path=propriété23}" Value="true">
                                    <Setter Property="Visibility" Value="Visible" />
                                  </DataTrigger>
                                </Style.Triggers>
                              </Style>
                            </Button.Style>
                          </Button>-->
 
                    <!-- erreur  +++ -->
                          <Button Click="Button_Click" Width="30" Height="25" VerticalAlignment="Top">...
                            <Button.Style>
                              <Style TargetType="{x:Type Button}">
                                <Setter Property="Visibility" Value="Hidden" />
                                <Style.Triggers>
                                  <DataTrigger Binding="{Binding Path=propriété23}" Value="true">
                                    <Setter Property="Visibility" Value="Visible" />
                                  </DataTrigger>
                                </Style.Triggers>
                              </Style>
                            </Button.Style>
                          </Button>
 
                        </DataTemplate>
                      </DataGridTemplateColumn.CellTemplate>
 
                    </DataGridTemplateColumn>
 
                  </DataGrid.Columns>
 
                </DataGrid>
 
              </Expander>
            </ItemsControl>
 
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
 
      </DataGridTemplateColumn>
    </DataGrid.Columns>
 
  </DataGrid>
Quelqu'un aurait-il déjà vu ce genre d'erreur ?
Visual Studio Express 2010 ne donne pas beaucoup d'information.

Cordialement.

Raphaël