Condividi tramite


Procedura: utilizzare il modello Master-Details con dati gerarchici

Aggiornamento: novembre 2007

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 ListBoxTeams 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 il controllo ListBox ottiene i dati da un oggetto CollectionViewSource, la selezione e la validità vengono sincronizzate automaticamente.

Per l'esempio completo, vedere Esempio di scenario Master-Details tramite ObjectDataProvider. 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

Concetti

Cenni preliminari sull'associazione dati

Cenni preliminari sui modelli di dati

Riferimenti

HierarchicalDataTemplate

Altre risorse

Esempi di associazione dati

Procedure relative all'associazione dati