次の方法で共有


方法: 階層データで Master-Detail パターンを使用する

この例では、マスター詳細シナリオを実装する方法を示します。

この例では、 LeagueListLeaguesのコレクションです。 各 League には NameDivisionsのコレクションがあり、各 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>

この例のスクリーンショットを次に示します。 Divisions ListBoxは、LeaguesListBox内の選択内容を自動的に追跡し、対応するデータを表示します。 Teams ListBoxは、他の 2 つのListBox コントロールの選択を追跡します。

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

この例で注目すべき 2 つの点は次のとおりです。

  1. 3 つの ListBox コントロールは、同じソースにバインドされます。 バインドの Path プロパティを設定して、 ListBox に表示するデータのレベルを指定します。

  2. 追跡する選択対象のIsSynchronizedWithCurrentItem コントロールで、trueプロパティをListBoxに設定する必要があります。 このプロパティを設定すると、選択した項目が常に CurrentItemとして設定されます。 または、ListBoxCollectionViewSourceからデータを取得すると、選択と通貨が自動的に同期されます。

XML データを使用する場合、手法は若干異なります。 例については、「 階層 XML データで Master-Detail パターンを使用する」を参照してください。

こちらも参照ください