Gewusst wie: Verwenden des Master/Detail-Musters mit hierarchischen Daten

In diesem Beispiel wird gezeigt, wie das Master/Detail-Szenario implementiert wird.

Beispiel

In diesem Beispiel steht LeagueList für eine Auflistung von Leagues. Jede League verfügt über einen Name und eine Auflistung von Divisions, und jede Division verfügt über einen Namen und eine Auflistung von Teams. Jedes Team besitzt einen Teamnamen.

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  Width="400" Height="180"
  Title="Master-Detail Binding" 
  Background="Silver">
  <Window.Resources>
    <src:LeagueList x:Key="MyList"/>


...


  <DockPanel DataContext="{Binding Source={StaticResource MyList}}">
    <StackPanel>
      <Label>My Soccer Leagues</Label>
      <ListBox ItemsSource="{Binding}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Name}"/>
      <ListBox ItemsSource="{Binding Path=Divisions}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Divisions/Name}"/>
      <ListBox DisplayMemberPath="Name" ItemsSource="{Binding Path=Divisions/Teams}"/>
    </StackPanel>
  </DockPanel>
</Window>

Im Folgenden finden Sie eine Bildschirmaufnahme des Beispiels. Das Divisions-ListBox verfolgt automatisch die Auswahlmöglichkeiten im Leagues-ListBox und zeigt die entsprechenden Daten an. Das Teams-ListBox verfolgt die Auswahlmöglichkeiten in den anderen zwei ListBox-Steuerelementen.

Master/Detail-Beispiel

Folgende zwei Sachen sind in diesem Beispiel zu beachten:

  1. Die drei ListBox-Steuerelemente werden an dieselbe Quelle gebunden. Sie legen die Path-Eigenschaft der Bindung fest, um anzugeben, welche Datenebene das ListBox anzeigen soll.

  2. Sie müssen die IsSynchronizedWithCurrentItem-Eigenschaft für die ListBox-Steuerelemente, deren Auswahl Sie verfolgen, auf true festlegen. Durch Festlegen dieser Eigenschaft wird sichergestellt, dass das ausgewählte Element immer als CurrentItem festgelegt wird. Wenn hingegen das ListBox die Daten von CollectionViewSource abruft, werden Auswahl und Währung automatisch synchronisiert.

Die Vorgehensweise unterscheidet sich etwas, wenn Sie XML-Daten verwenden. Ein Beispiel finden Sie unter Gewusst wie: Verwenden des Master/Detail-Musters mit hierarchischen XML-Daten.

Siehe auch

Aufgaben

Gewusst wie: Binden an eine Auflistung und Anzeigen von Informationen auf Grundlage der Auswahl

Referenz

HierarchicalDataTemplate

Konzepte

Übersicht über Datenbindung

Übersicht über Datenvorlagen

Weitere Ressourcen

Gewusst-wie-Themen zur Datenbindung