Como usar o padrão de Master-Detail com dados hierárquicos
Este exemplo mostra como implementar o cenário mestre-detalhe.
Exemplo
Neste exemplo, LeagueList
é uma coleção de Leagues
. Cada League
tem um Name
e uma coleção de Divisions
, e cada Division
tem um nome e uma coleção de Teams
. Cada Team
tem um nome de equipa.
<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>
A seguir está uma captura de tela do exemplo. O Divisions
ListBox rastreia automaticamente as seleções no Leagues
ListBox e exibe os dados correspondentes. O Teams
ListBox rastreia seleções nos outros dois controles ListBox.
As duas coisas a observar neste exemplo são:
Os três controles ListBox se ligam à mesma fonte. Você define a propriedade Path da associação para especificar qual nível de dados você deseja que o ListBox exiba.
Você deve definir a propriedade IsSynchronizedWithCurrentItem para
true
nos controlos ListBox cuja seleção está a ser rastreada por si. Definir essa propriedade garante que o item selecionado seja sempre definido como o CurrentItem. Como alternativa, se o ListBox obtiver os dados de um CollectionViewSource, sincroniza automaticamente a seleção e a moeda.
A técnica é ligeiramente diferente quando você está usando dados XML. Para obter um exemplo, consulte Utilizar o Padrão Master-Detail com dados XML hierárquicos.
Ver também
- HierarchicalDataTemplate
- vincular a uma coleção e exibir informações com base na seleção
- Visão geral da vinculação de dados
- Visão geral da modelização de dados
- Tópicos de instruções
.NET Desktop feedback