2012-03-29 11 views
3

Ich habe eine DataGrid, die eine Liste von Klassen für einen Professor anzeigt. Ich möchte dem Professor erlauben, auf eine Zeile auf der DataGrid zu klicken und dann die Schüler anzuzeigen, die in dieser Klasse sind.Anzeigen von Details beim Klicken auf eine DataGrid-Zeile

Ist das mit WPF möglich?

+0

Sie finden grundlegende Informationen zum Thema auf https://www.wpftutorial.net/DataGrid.html, unter dem Abschnitt "Row Details" – hypnos

Antwort

1

im Datagrid, fügen Sie die folgenden Abschnitte:

<DataGrid.RowDetailsTemplate> 
    <DataTemplate> 
     <DataGrid ItemsSource="{Binding students}"> 
     </DataGrid> 
    </DataTemplate> 
</DataGrid.RowDetailsTemplate> 
0

Wenn Sie die Details inline in der Tabelle angezeigt werden soll, @AnsonWoody die Antwort geschrieben. Wenn Sie die Details außerhalb in einer separaten Steuerung anzeigen möchten, verwenden Sie SelectedItem der DateGrid oder CurrentItem der CollectionViewSource.

Ihre Datacontext Unter der Annahme, die Elemente in ClassesWithStudents enthält und jedes Element hat eine Eigenschaft Students, könnten Sie wie folgt vorgehen:

<StackPanel x:Name="panel1"> 
    <StackPanel.Resources> 
     <CollectionViewSource x:Key="classesCollection" Source="{Binding ClassesWithStudents}"/> 
    </StackPanel.Resources> 
    <DataGrid x:Name="dg1" ItemsSource="{Binding Source={StaticResource classesCollection}}"> 
    </DataGrid> 
    <!-- Bind current item with path=/ --> 
    <ContentControl Content="{Binding Source={StaticResource classesCollection},Path=/Students}"/> 
    <!-- Bind selected item --> 
    <ContentControl Content="{Binding ElementName=dg1,Path=SelectedItem.Students}"/> 
</StackPanel> 

Ofcourse der ContentControl ist nur ein Platzhalter. Wenn Students eine Sammlung ist, verwenden Sie etwas wie <ItemsControl ItemsSource="{Binding Source={StaticResource classesCollection},Path=/Students}"/> oder was auch immer Ihren Anforderungen entspricht, um eine gut aussehende Schülervertretung zu erhalten.

Verwandte Themen