Como: Use the Master-Detail Pattern with Hierarchical Data
Este exemplo mostra como implementar o cenário mestre-detalhes.
Exemplo
Nesse exemplo, LeagueList é uma coleção de Leagues. Cada League possui um Name e uma coleção de Divisions, e cada Division tem um nome e uma coleção de Teams. Cada Team possui um nome de equipe.
<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>
A seguir vamos a tela do exemplo. A ListBox Divisions automaticamente controla as seleções na ListBox Leagues e exibe os dados correspondentes. A ListBox Teams controla as seleções nos outros dois controles ListBox.
As duas coisas a observar no exemplo são:
Os três controles ListBox são associados à mesma fonte. Você define a propriedade Path da associação para especificar que nível de dados você deseja que a ListBox mostre.
Você deve definir a propriedade IsSynchronizedWithCurrentItem como true nos controles ListBox nos quais você esteja controlando a seleção. A definição dessa propriedade garante que o item selecionado é sempre definido como CurrentItem. Como alternativa, se o ListBox obtém seus dados de um CollectionViewSource, ele sincroniza automaticamente a seleção e moeda.
For the complete sample, see Cenário de Master-Detail usando o exemplo do ObjectDataProvider. A técnica é um pouco diferente quando você estiver usando dados XML. Para um exemplo, consulte Como: Use the Master-Detail Pattern with Hierarchical XML Data.
Consulte também
Tarefas
Como: Bind to a Collection and Display Information Based on Selection
Conceitos
Revisão de Associação de Dados
Visão geral sobre Templating de dados