Procedure: het Master-Detail-patroon gebruiken met hiërarchische gegevens
In dit voorbeeld ziet u hoe u het masterdetailscenario implementeert.
Voorbeeld
In dit voorbeeld is LeagueList
een verzameling van Leagues
. Elke League
heeft een Name
en een verzameling van Divisions
, en elke Division
heeft een naam en een verzameling van Teams
. Elke Team
heeft een teamnaam.
<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>
Hier volgt een schermopname van het voorbeeld. De Divisions
ListBox houdt automatisch selecties in de Leagues
ListBox bij en geeft de bijbehorende gegevens weer. De Teams
ListBox houdt selecties bij in de andere twee ListBox bedieningselementen.
De twee dingen die u in dit voorbeeld moet zien, zijn:
De drie ListBox besturingselementen binden aan dezelfde bron. U stelt de eigenschap Path van de binding in om op te geven welk gegevensniveau de ListBox moet weergeven.
U moet de eigenschap IsSynchronizedWithCurrentItem instellen op
true
voor de ListBox besturingselementen waarvan u de selectie volgt. Als u deze eigenschap instelt, zorgt u ervoor dat het geselecteerde item altijd is ingesteld als de CurrentItem. Als de ListBox deze gegevens uit een CollectionViewSourceophaalt, worden selecties en valuta automatisch gesynchroniseerd.
De techniek verschilt enigszins wanneer u XML-gegevens gebruikt. Zie Het patroon Master-Detail gebruiken met hiërarchische XML-gegevensvoor een voorbeeld.
Zie ook
.NET Desktop feedback