方法 : 階層データでマスタ詳細パターンを使用する
更新 : 2007 年 11 月
この例では、マスタ詳細シナリオを実装する方法を示します。
使用例
この例では、LeagueList は Leagues のコレクションです。League にはそれぞれ Divisions のコレクションと Name があり、Division にはそれぞれ Teams のコレクションと名前があります。Team にはそれぞれチーム名があります。
<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>
この例のスクリーンショットを次に示します。Divisions ListBox は、Leagues ListBox での選択を自動的に追跡し、対応するデータを表示します。Teams ListBox は、他の 2 つの ListBox コントロールでの選択を追跡します。
この例では、次の 2 つの点に注意する必要があります。
3 つの ListBox コントロールは、同じソースにバインドしています。ListBox に表示するデータのレベルを指定するには、バインディングの Path プロパティを設定します。
選択を追跡する ListBox コントロールでは、IsSynchronizedWithCurrentItem プロパティを true に設定する必要があります。このプロパティを設定すると、選択されている項目は常に CurrentItem として設定されます。または、ListBox が CollectionViewSource からデータを取得する場合は、選択と現在の項目が自動的に同期されます。
サンプル全体については、「ObjectDataProvider を使用したマスタ詳細シナリオのサンプル」を参照してください。XML データを使用する場合は、方法が若干異なります。例については、「方法 : 階層 XML データでマスタ詳細パターンを使用する」を参照してください。
参照
処理手順
方法 : コレクションにバインドして選択に基づく情報を表示する