Comment : utiliser le modèle maître/détail avec des données hiérarchiques

Cet exemple montre comment implémenter le scénario maître-détail.

Exemple

Dans cet exemple, LeagueList est une collection de Leagues. Chacun League a une Name collection et une collection de Divisions, et chacun Division a un nom et une collection de Teams. Chacun Team a un nom d’équipe.

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

Voici une capture d’écran de l’exemple. Le DivisionsListBox suivi automatique des sélections dans le fichier et l’affichage LeaguesListBox des données correspondantes. Le TeamsListBox suivi des sélections dans les deux ListBox autres contrôles.

Screenshot that shows a Master-detail scenario example.

Les deux éléments à remarquer dans cet exemple sont les suivants :

  1. Les trois ListBox contrôles sont liés à la même source. Vous définissez la Path propriété de la liaison pour spécifier le ListBox niveau de données à afficher.

  2. Vous devez définir la IsSynchronizedWithCurrentItem propriété true sur les ListBox contrôles dont vous effectuez le suivi. La définition de cette propriété garantit que l’élément sélectionné est toujours défini en tant que CurrentItem. Sinon, si les ListBox données sont extraites d’un CollectionViewSource, elles synchronisent automatiquement la sélection et la devise.

La technique est légèrement différente lorsque vous utilisez des données XML. Pour obtenir un exemple, consultez Utiliser le modèle maître-détail avec des données XML hiérarchiques.

Voir aussi