Procedura: utilizzare il modello Master-Details con dati gerarchici

Questo esempio illustra come implementare lo scenario master-detail.

Esempio

In questo esempio LeagueList è una raccolta di Leagues. Ogni League oggetto ha un oggetto e una Name raccolta di Divisionse ognuno Division ha un nome e una raccolta di Teams. Ognuno Team ha un nome del team.

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

Lo screenshot seguente mostra l'esempio. L'oggetto DivisionsListBox tiene traccia automaticamente delle selezioni nell'oggetto LeaguesListBox e visualizza i dati corrispondenti. Tiene TeamsListBox traccia delle selezioni negli altri due ListBox controlli.

Screenshot che mostra un esempio di scenario Master-detail.

I due aspetti da notare in questo esempio sono:

  1. I tre ListBox controlli vengono associati alla stessa origine. Impostare la Path proprietà dell'associazione per specificare il livello di dati da ListBox visualizzare.

  2. È necessario impostare la IsSynchronizedWithCurrentItem proprietà su true nei ListBox controlli di cui si esegue il rilevamento della selezione. L'impostazione di questa proprietà garantisce che l'elemento selezionato sia sempre impostato come CurrentItem. In alternativa, se ottiene ListBox i dati da un CollectionViewSourceoggetto , sincronizza automaticamente la selezione e la valuta.

La tecnica è leggermente diversa quando si usano dati XML. Per un esempio, vedere Usare il modello di Master-Detail con dati XML gerarchici.

Vedi anche