Postupy: Použití vzoru seznam-podrobnosti s hierarchickými daty
Tento příklad ukazuje, jak implementovat scénář s hlavními podrobnostmi.
Příklad
V tomto příkladu LeagueList
je kolekce .Leagues
Každý League
má Name
a kolekci Divisions
a každý Division
má název a kolekci Teams
. Každý Team
má název týmu.
<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>
Následuje snímek obrazovky s příkladem. Automaticky Divisions
ListBox sleduje výběry v Leagues
ListBox a zobrazí odpovídající data. Sleduje Teams
ListBox výběry v ostatních dvou ListBox ovládacích prvcích.
V tomto příkladu si můžete všimnout těchto dvou věcí:
Tři ListBox ovládací prvky se sváže se stejným zdrojem. Vlastnost vazby nastavíte Path tak, aby určila, jakou úroveň dat chcete ListBox zobrazit.
U ovládacích prvků, které sledujete, je nutné nastavit IsSynchronizedWithCurrentItem vlastnost
true
ListBox . Nastavení této vlastnosti zajišťuje, že vybraná položka je vždy nastavena jako CurrentItem. Případně, pokud ListBox získá data z objektu CollectionViewSource, synchronizuje výběr a měnu automaticky.
Technika se při použití dat XML mírně liší. Příklad najdete v tématu Použití vzoru master-detail s hierarchickými daty XML.
Viz také
.NET Desktop feedback