Практическое руководство. Использование шаблона "основной-подчиненный" с иерархическими данными
В этом примере описывается, как реализовать скрипт с отношением «основной-подчиненный».
Пример
В этом примере LeagueList представляет собой коллекцию Leagues. Каждый League имеет Name и коллекцию Divisions, а каждый Division содержит имя и коллекцию Teams. Каждый Team содержит имя команды.
<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>
Ниже приведен снимок экрана этого примера. Divisions ListBox автоматически отслеживает выделение вLeagues ListBox и отображает соответствующие данные. Teams ListBox отслеживает выбор в двух других элементах управления ListBox.
В этом примере следует обратить внимание на два обстоятельства.
Три элемента управления ListBox привязываются к одному источнику. Необходимо установить свойство Path привязки для определения уровня данных, которые нужно отобразить в ListBox.
Необходимо задать для свойства IsSynchronizedWithCurrentItem значение true для элемента управления ListBox, из которого осуществляется отслеживание выбора. Установка этого свойства гарантирует, что выбранный элемент всегда устанавливается как CurrentItem. И напротив, если ListBox получает данные от CollectionViewSource, он автоматически синхронизирует выбор и денежные единицы.
При использовании данных XML применяется несколько иной метод. Пример см. в разделе Практическое руководство. Использование шаблона "основной-подробности" с иерархическими данными XML.
См. также
Задачи
Ссылки
Основные понятия
Общие сведения о связывании данных
Общие сведения о шаблонах данных