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 Name insieme e di Divisionse e ognuno Division ha un nome e una raccolta di Teams. Ognuno Team ha un nome di 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 that shows a Master-detail scenario example.

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 ListBox da visualizzare.

  2. È necessario impostare la IsSynchronizedWithCurrentItem proprietà su true sui 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 master-dettagli con dati XML gerarchici.

Vedi anche