Cómo: Usar el patrón principal-detalle con datos jerárquicos
En este ejemplo se muestra cómo implementar el escenario principal-detalle.
Ejemplo
En este ejemplo, LeagueList
es una colección de Leagues
. Cada League
tiene 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="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>
La siguiente captura de pantalla muestra el ejemplo. El objeto Divisions
ListBox realiza automáticamente un seguimiento de las selecciones en Leagues
ListBox y muestra los datos correspondientes. El objeto Teams
ListBox realiza un seguimiento de las selecciones de los otros dos controles ListBox.
Los dos aspectos que se deben observar en este ejemplo son los siguientes:
Los tres controles ListBox se enlazan al mismo origen. La propiedad Path del enlace se establece para especificar qué nivel de datos quiere que muestre ListBox.
Debe establecer la propiedad IsSynchronizedWithCurrentItem en
true
en los controles ListBox de los que se realiza el seguimiento de la selección. Al establecer esta propiedad, se garantiza que el elemento seleccionado siempre se establezca como CurrentItem. Como alternativa, si ListBox obtiene los datos de CollectionViewSource, sincroniza automáticamente la selección y la moneda.
La técnica es ligeramente diferente cuando se usan datos XML. Por ejemplo, consulte Uso del patrón principal-detalle con datos XML jerárquicos.
Vea también
.NET Desktop feedback