Delen via


Procedure: het Master-Detail-patroon gebruiken met hiërarchische gegevens

In dit voorbeeld ziet u hoe u het masterdetailscenario implementeert.

Voorbeeld

In dit voorbeeld is LeagueList een verzameling van Leagues. Elke League heeft een Name en een verzameling van Divisions, en elke Division heeft een naam en een verzameling van Teams. Elke Team heeft een teamnaam.

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

Hier volgt een schermopname van het voorbeeld. De DivisionsListBox houdt automatisch selecties in de LeaguesListBox bij en geeft de bijbehorende gegevens weer. De TeamsListBox houdt selecties bij in de andere twee ListBox bedieningselementen.

Schermafbeelding die een voorbeeld van een Master-detailscenario toont.

De twee dingen die u in dit voorbeeld moet zien, zijn:

  1. De drie ListBox besturingselementen binden aan dezelfde bron. U stelt de eigenschap Path van de binding in om op te geven welk gegevensniveau de ListBox moet weergeven.

  2. U moet de eigenschap IsSynchronizedWithCurrentItem instellen op true voor de ListBox besturingselementen waarvan u de selectie volgt. Als u deze eigenschap instelt, zorgt u ervoor dat het geselecteerde item altijd is ingesteld als de CurrentItem. Als de ListBox deze gegevens uit een CollectionViewSourceophaalt, worden selecties en valuta automatisch gesynchroniseerd.

De techniek verschilt enigszins wanneer u XML-gegevens gebruikt. Zie Het patroon Master-Detail gebruiken met hiërarchische XML-gegevensvoor een voorbeeld.

Zie ook