Comment : utiliser le modèle maître/détail avec des données hiérarchiques
Mise à jour : novembre 2007
Cet exemple indique comment implémenter le scénario maître/détail.
Exemple
Dans cet exemple, LeagueList est une collection de Leagues. Chaque League a un Name et une collection de Divisions et chaque Division a un nom et une collection d'Teams. Chaque Team a un nom d'équipe.
<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>
La capture d'écran suivante illustre l'exemple. DivisionsListBox suit automatiquement des sélections dans LeaguesListBox et affiche les données correspondantes. TeamsListBox suit des sélections dans les deux autres contrôles ListBox.
Les deux choses à remarquer dans cet exemple sont :
Les trois contrôles ListBox sont liés à la même source. Vous devez définir la propriété Path de la liaison pour spécifier le niveau de données affiché par ListBox.
Vous devez affecter true à la propriété IsSynchronizedWithCurrentItem sur les contrôles ListBox dont vous suivez la sélection. La définition de cette propriété garantit que l'élément sélectionné est toujours défini comme CurrentItem. Ou bien, si ListBox obtient ses données à partir de CollectionViewSource, celui-ci synchronise automatiquement la sélection et la devise.
Pour l'exemple complet, consultez Scénario maître/détail utilisant ObjectDataProvider, exemple. La technique est légèrement différente lorsque vous utilisez des données XML. Pour obtenir un exemple, consultez Comment : utiliser le modèle maître/détail avec des données XML hiérarchiques.
Voir aussi
Tâches
Concepts
Vue d'ensemble de la liaison de données
Vue d'ensemble des modèles de données