2017-04-02 6 views
1

Ich habe ein Problem mit einem inneren Element in WPF. Es ist das innere Grid DataGrid. Ich habe keinen Zugriff darauf im Code hinter dem normalen Datagrid. Habe ich vergessen, etwas im XAML-Code hinzuzufügen?WPF: Kann nicht auf innere Datagrid zugreifen

<DataGrid x:Name="dataGrid" ItemsSource="{Binding Path = data, IsAsync=True}" HorizontalAlignment="Left" Height="198" Margin="35,38,0,0" VerticalAlignment="Top" Width="474" AutoGenerateColumns="False" IsReadOnly="True"> 
     <DataGrid.RowHeaderTemplate> 
      <DataTemplate> 
       <Expander Expanded="Expander_Expanded" Collapsed="Expander_Collapsed"> 
       </Expander> 
      </DataTemplate> 
     </DataGrid.RowHeaderTemplate> 
     <DataGrid.RowDetailsTemplate> 
      <DataTemplate> 
      <DataGrid x:Name="innerGrid" Height="200"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Header="Patientennummer" /> 
        </DataGrid.Columns> 
       </DataGrid> 
       </DataTemplate> 
      </DataGrid.RowDetailsTemplate> 
      </DataGrid> 
+0

Was passiert, wenn Sie versuchen, darauf als 'innerGrid' zuzugreifen? – Mathew

+0

Er kann nicht auf den Code zugreifen, der hinter der aktuellen Datenvorlage steht. – Parag

+0

Wenn ich versuche, darauf zuzugreifen, bekomme ich diesen Fehler: Der Name "innerGrid" existiert nicht im aktuellen Kontext. – treun

Antwort

0

Sie können auf das innere Raster in LoadingRowDetails-Ereignis Ihres Haupt "DataGrid" zugreifen.

private void dataGrid_LoadingRowDetails(object sender, DataGridRowDetailsEventArgs e) 
    { 
     DataGrid innerGrid = e.DetailsElement as DataGrid; 

     if (innerGrid != null) 
     { 
     } 
    } 

Alternativ können Sie „Loaded“ Ereignis für „inneren grid“ hinzufügen und innerhalb dieser Event-Handler, können Sie tun, was Sie mit inneren Gittern wollen.

Hoffe, das hilft.