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.
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 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à
Concetti
Cenni preliminari sull'associazione dati
Cenni preliminari sui modelli di dati