如何:使用含階層式資料的主從式模式

此範例示範如何執行主版詳細資料案例。

範例

在此範例中, LeagueList 是的集合 Leagues 。 每個 League 都有 Name 和的集合 Divisions ,而且每個都有的 Division 名稱和集合 Teams 。 每個 Team 都有小組名稱。

<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>

以下是範例的螢幕擷取畫面。 DivisionsListBox 會自動追蹤中的選取專案 LeaguesListBox ,並顯示對應的資料。 會 TeamsListBox 追蹤其他兩個控制項中的選取專案 ListBox

Screenshot that shows a Master-detail scenario example.

此範例中有兩個要注意的事項:

  1. 這三個控制項系結 ListBox 至相同的來源。 您可以設定系結的 Path 屬性,以指定您想要顯示的資料層級 ListBox

  2. 您必須 IsSynchronizedWithCurrentItemtrueListBox 您要追蹤之選取範圍的控制項上,將屬性設定為。 設定這個屬性可確保選取的專案一律設定為 CurrentItem 。 或者,如果 ListBox 從取得資料 CollectionViewSource ,則會自動同步處理選取專案和貨幣。

當您使用 XML 資料時,此技巧會稍有不同。 如需範例,請參閱搭配 使用 Master-Detail 模式與階層式 XML 資料

另請參閱