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.
Si notino i due aspetti dell'esempio riportati di seguito:
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.
È 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à
Riferimenti
Concetti
Cenni preliminari sull'associazione dati
Cenni preliminari sui modelli di dati