Postupy: Použití vzoru seznam-podrobnosti s hierarchickými daty

Tento příklad ukazuje, jak implementovat scénář s hlavními podrobnostmi.

Příklad

V tomto příkladu LeagueList je kolekce .Leagues Každý LeagueName a kolekci Divisionsa každý Division má název a kolekci Teams. Každý Team má název týmu.

<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>

Následuje snímek obrazovky s příkladem. Automaticky Divisions ListBox sleduje výběry v Leagues ListBox a zobrazí odpovídající data. Sleduje Teams ListBox výběry v ostatních dvou ListBox ovládacích prvcích.

Snímek obrazovky znázorňující příklad scénáře s hlavními podrobnostmi

V tomto příkladu si můžete všimnout těchto dvou věcí:

  1. Tři ListBox ovládací prvky se sváže se stejným zdrojem. Vlastnost vazby nastavíte Path tak, aby určila, jakou úroveň dat chcete ListBox zobrazit.

  2. U ovládacích prvků, které sledujete, je nutné nastavit IsSynchronizedWithCurrentItem vlastnost true ListBox . Nastavení této vlastnosti zajišťuje, že vybraná položka je vždy nastavena jako CurrentItem. Případně, pokud ListBox získá data z objektu CollectionViewSource, synchronizuje výběr a měnu automaticky.

Technika se při použití dat XML mírně liší. Příklad najdete v tématu Použití vzoru master-detail s hierarchickými daty XML.

Viz také