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

In diesem Beispiel wird gezeigt, wie Sie das Masterdetail-Szenario implementiert wird.

Beispiel

In diesem Beispiel ist LeagueList eine Auflistung von Leagues. Jeder League verfügt über Name und ist eine Auflistung von Divisions und jede Division hat einen Namen und eine Sammlung von Teams. Jede 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 finden Sie ein Bildschirmfoto des Beispiels. Die Divisions ListBox-Auswahl wird automatisch in den entsprechenden Daten in Leagues ListBox nachverfolgt und angezeigt. Die Teams ListBox-Markierungen in den anderen beiden ListBox-Steuerelementen werden nachverfolgt.

Screenshot: Beispiel für ein Master-/Detail-Szenario

Die beiden zu beachtenden Dinge in diesem Beispiel sind:

  1. Die drei ListBox-Steuerelemente sind an dieselbe Quelle gebunden. Sie legen die Path-Eigenschaft der Bindung fest, um anzugeben, welche Datenebene Sie ListBox anzeigen möchten.

  2. Sie müssen die IsSynchronizedWithCurrentItem-Eigenschaft auf true auf den ListBox-Steuerelementen festlegen, deren Auswahl Sie nachverfolgen. Wenn Sie diese Eigenschaft festlegen, wird das ausgewählte Element immer als CurrentItem festgelegt. Wenn alternativ ListBox die Daten von einem CollectionViewSource abruft, werden Auswahl und Währung automatisch synchronisiert.

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

Siehe auch