Freigeben über


Vorgehensweise: Verwenden des Master-Detail-Musters mit hierarchischen Daten

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

Beispiel

In diesem Beispiel LeagueList ist eine Auflistung von Leagues. Jeder League hat eine Name und eine Sammlung von Divisions, und jeder Division hat einen Namen und eine Sammlung von Teams. Jeder Team hat einen Teamnamen.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://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 sehen Sie einen Screenshot des Beispiels. Die DivisionsListBox verfolgt automatisch Auswahlen in den LeaguesListBox und zeigt die entsprechenden Daten an. Die TeamsListBox Auswahl verfolgt die Auswahl in den anderen beiden ListBox Steuerelementen.

Ein Screenshot, der ein Beispiel eines Master-Detail-Szenarios zeigt.

Die beiden Punkte, die Sie in diesem Beispiel beachten müssen, sind:

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

  2. Sie müssen die IsSynchronizedWithCurrentItem Eigenschaft auf true der ListBox Steuerelemente festlegen, deren Auswahl Sie nachverfolgen. Durch Festlegen dieser Eigenschaft wird sichergestellt, dass das ausgewählte Element immer als CurrentItemfestgelegt ist. Wenn alternativ ListBox die Daten von einem CollectionViewSource-Element abruft, werden Auswahl und Währung automatisch synchronisiert.

Die Technik unterscheidet sich geringfügig, wenn Sie XML-Daten verwenden. Ein Beispiel finden Sie unter Verwenden des Master-Detail Musters mit hierarchischen XML-Daten.

Siehe auch