Jak użyć wzorca szczegółowego z danymi hierarchicznymi
W tym przykładzie pokazano, jak zaimplementować scenariusz master-detail.
Przykład
W tym przykładzie LeagueList
jest to kolekcja Leagues
. Każda League
z nich ma Name
kolekcję Divisions
, a każda z nich Division
ma nazwę i kolekcję Teams
. Każda z nich Team
ma nazwę zespołu.
<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>
Poniżej przedstawiono zrzut ekranu przedstawiający przykład. Funkcja Divisions
ListBox automatycznie śledzi wybrane opcje w obiekcie Leagues
ListBox i wyświetla odpowiednie dane. Ścieżki Teams
ListBox zaznaczenia w dwóch ListBox pozostałych kontrolkach.
Dwie kwestie, które należy zauważyć w tym przykładzie, to:
Trzy ListBox kontrolki są powiązane z tym samym źródłem. Należy ustawić Path właściwość powiązania, aby określić poziom danych, które mają ListBox być wyświetlane.
Należy ustawić IsSynchronizedWithCurrentItem właściwość na
true
na kontrolki ListBox , których zaznaczenie śledzisz. Ustawienie tej właściwości gwarantuje, że wybrany element jest zawsze ustawiony jako CurrentItem. Alternatywnie, jeśli ListBox pobiera dane z CollectionViewSourceelementu , automatycznie synchronizuje wybór i walutę.
Technika jest nieco inna, gdy używasz danych XML. Aby zapoznać się z przykładem, zobacz Use the Master-Detail Pattern with Hierarchical XML Data (Używanie wzorca szczegółów z hierarchicznymi danymi XML).
Zobacz też
.NET Desktop feedback