Procédure : Utiliser le modèle maître/détail avec des données hiérarchiquesHow to: Use the Master-Detail Pattern with Hierarchical Data

Cet exemple montre comment implémenter le scénario maître / détail.This example shows how to implement the master-detail scenario.

ExempleExample

Dans cet exemple, LeagueList est une collection de Leagues.In this example, LeagueList is a collection of Leagues. Chaque League a un Name et une collection de Divisionset chaque Division a un nom et une collection de Teams.Each League has a Name and a collection of Divisions, and each Division has a name and a collection of Teams. Chaque Team a un nom d’équipe.Each Team has a team name.

<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.The following is a screenshot of the example. Le Divisions ListBox effectue automatiquement le suivi des sélections dans le Leagues ListBox et afficher les données correspondantes.The Divisions ListBox automatically tracks selections in the Leagues ListBox and display the corresponding data. Le Teams ListBox effectue le suivi des sélections dans les deux autres ListBox contrôles.The Teams ListBox tracks selections in the other two ListBox controls.

Capture d’écran montrant un maître-exemple de scénario de détail.

Les deux choses à noter dans cet exemple sont :The two things to notice in this example are:

  1. Les trois ListBox lient des contrôles à la même source.The three ListBox controls bind to the same source. Vous définissez le Path propriété de la liaison pour spécifier le niveau de données que vous souhaitez le ListBox à afficher.You set the Path property of the binding to specify which level of data you want the ListBox to display.

  2. Vous devez définir le IsSynchronizedWithCurrentItem propriété true sur la ListBox contrôles dont la sélection que vous effectuez le suivi.You must set the IsSynchronizedWithCurrentItem property to true on the ListBox controls of which the selection you are tracking. Définition de cette propriété garantit que l’élément sélectionné est toujours défini en tant que le CurrentItem.Setting this property ensures that the selected item is always set as the CurrentItem. Ou bien, si le ListBox obtient ses données à partir d’un CollectionViewSource, il synchronise automatiquement sélection et la devise.Alternatively, if the ListBox gets it data from a CollectionViewSource, it synchronizes selection and currency automatically.

La technique est légèrement différente lorsque vous utilisez XMLXML données.The technique is slightly different when you are using XMLXML data. Pour obtenir un exemple, consultez utiliser le modèle maître / détail avec des données XML hiérarchiques.For an example, see Use the Master-Detail Pattern with Hierarchical XML Data.

Voir aussiSee also