Compartir a través de


Cómo: Usar el patrón principal-detalle con datos jerárquicos

Actualización: noviembre 2007

En este ejemplo se muestra cómo implementar el patrón principal-detalle con datos jerárquicos.

Ejemplo

En este ejemplo, LeagueList es una colección de Leagues. Cada League tiene un valor Name y una colección de Divisions y cada Division tiene un nombre y una colección de Teams. Cada Team tiene un nombre de equipo.

<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>

A continuación, se muestra una captura de pantalla del ejemplo. El control ListBox Divisions realiza automáticamente el seguimiento de las selecciones en el control ListBox Leagues y muestra los datos correspondientes. El control ListBox Teams realiza el seguimiento de las selecciones en los otros dos controles ListBox.

Ejemplo Master-detail

Los dos puntos importantes de este ejemplo son:

  1. Los tres controles ListBox están enlazados al mismo origen. Debe establecer la propiedad Path del enlace para especificar qué nivel de datos desea que muestre el control ListBox.

  2. Debe establecer la propiedad IsSynchronizedWithCurrentItem en true en los controles ListBox de la selección de la que está realizando el seguimiento. Al establecer esta propiedad se garantiza que el elemento seleccionado se establezca siempre como CurrentItem. Alternativamente, si el control ListBox obtiene sus datos de un objeto CollectionViewSource, sincronizará automáticamente la selección y la actualización.

Para obtener el ejemplo completo, vea Ejemplo Master-Detail Scenario Using ObjectDataProvider. La técnica es ligeramente diferente cuando se utilizan datos XML. Para obtener un ejemplo, consulte Cómo: Usar el patrón principal-detalle con datos XML jerárquicos.

Vea también

Tareas

Cómo: Enlazar a una colección y mostrar información basada en la selección

Conceptos

Información general sobre el enlace de datos

Información general sobre plantillas de datos

Referencia

HierarchicalDataTemplate

Otros recursos

Ejemplos de enlace de datos

Temas "Cómo..." sobre enlace de datos