Condividi tramite


Procedura: utilizzare il modello Master-Details con dati gerarchici

In questo esempio viene illustrato come implementare lo scenario Master-Details.

Esempio

In questo esempio, LeagueList è un insieme di Leagues. Ogni League ha un Name e un insieme di Divisions e ciascuna Division ha un nome e un insieme di Teams. Ogni Team ha un nome.

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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>

Di seguito è disponibile una schermata dell'esempio. Il controllo ListBox Divisions consente di rilevare automaticamente le selezioni nel controllo ListBox Leagues e di visualizzare i dati corrispondenti. Il controllo ListBox Teams consente di rilevare le selezioni negli altri due controlli ListBox.

Esempio Master Detail Data

Si notino i due aspetti dell'esempio riportati di seguito:

  1. I tre controlli ListBox sono associati alla stessa origine. La proprietà Path è dell'associazione viene impostata per specificare quale livello di dati deve essere visualizzato dal controllo ListBox.

  2. È necessario impostare la proprietà IsSynchronizedWithCurrentItem su true sui controlli ListBox di cui si intende rilevare le selezioni. L'impostazione di questa proprietà assicura che l'elemento selezionato sia sempre impostato come CurrentItem. In alternativa, se ListBox ottiene i dati da un oggetto CollectionViewSource, la selezione e la valuta vengono sincronizzate automaticamente.

La tecnica varia leggermente se si utilizzano dati XML. Per un esempio, vedere Procedura: utilizzare il modello Master-Details con dati XML gerarchici.

Vedere anche

Attività

Procedura: eseguire l'associazione di un insieme e visualizzare informazioni in base alla selezione effettuata

Riferimenti

HierarchicalDataTemplate

Concetti

Cenni preliminari sull'associazione dati

Cenni preliminari sui modelli di dati

Altre risorse

Procedure relative all'associazione dati