方法 : 階層データでマスター詳細パターンを使用するHow to: Use the Master-Detail Pattern with Hierarchical Data

この例では、マスター/詳細シナリオを実装する方法を示します。This example shows how to implement the master-detail scenario.

Example

この例では、LeagueListLeaguesのコレクションです。In this example, LeagueList is a collection of Leagues. League には DivisionsName とコレクションがあり、各 Division には名前と Teamsのコレクションがあります。Each League has a Name and a collection of Divisions, and each Division has a name and a collection of Teams. Team にはチーム名があります。Each Team has a team name.

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

次に示すのは、この例のスクリーンショットです。The following is a screenshot of the example. Divisions ListBox によって、Leagues ListBox の選択が自動的に追跡され、対応するデータが表示されます。The Divisions ListBox automatically tracks selections in the Leagues ListBox and display the corresponding data. Teams ListBox は、他の2つの ListBox コントロールでの選択を追跡します。The Teams ListBox tracks selections in the other two ListBox controls.

マスター-詳細シナリオの例を示すスクリーンショット。

この例では、次の2つの点に注意してください。The two things to notice in this example are:

  1. 3つの ListBox コントロールは、同じソースにバインドされます。The three ListBox controls bind to the same source. バインドの Path プロパティを設定して、ListBox に表示するデータのレベルを指定します。You set the Path property of the binding to specify which level of data you want the ListBox to display.

  2. IsSynchronizedWithCurrentItem プロパティは、追跡する選択範囲の ListBox コントロールで true するように設定する必要があります。You must set the IsSynchronizedWithCurrentItem property to true on the ListBox controls of which the selection you are tracking. このプロパティを設定すると、選択した項目が常に CurrentItemとして設定されます。Setting this property ensures that the selected item is always set as the CurrentItem. また、ListBoxCollectionViewSourceからデータを取得する場合は、選択と通貨が自動的に同期されます。Alternatively, if the ListBox gets it data from a CollectionViewSource, it synchronizes selection and currency automatically.

XML データを使用する場合、この手法は少し異なります。The technique is slightly different when you are using XML data. 例については、「階層 XML データでマスター詳細パターンを使用する」を参照してください。For an example, see Use the Master-Detail Pattern with Hierarchical XML Data.

関連項目See also