Cómo: Usar el patrón principal-detalle con datos jerárquicos
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.
Los dos puntos importantes de este ejemplo son:
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.
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. Como alternativa, si el control ListBox obtiene sus datos de un objeto CollectionViewSource, sincronizará automáticamente la selección y la actualización.
La técnica es ligeramente diferente cuando se utilizan datos XML. Para obtener un ejemplo, vea 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
Referencia
Conceptos
Información general sobre el enlace de datos
Información general sobre plantillas de datos