この例では、マスター詳細シナリオを実装する方法を示します。
例
この例では、 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>
この例のスクリーンショットを次に示します。
Divisions
ListBoxは、Leagues
ListBox内の選択内容を自動的に追跡し、対応するデータを表示します。
Teams
ListBoxは、他の 2 つのListBox コントロールの選択を追跡します。
この例で注目すべき 2 つの点は次のとおりです。
3 つの ListBox コントロールは、同じソースにバインドされます。 バインドの Path プロパティを設定して、 ListBox に表示するデータのレベルを指定します。
追跡する選択対象のIsSynchronizedWithCurrentItem コントロールで、
true
プロパティをListBoxに設定する必要があります。 このプロパティを設定すると、選択した項目が常に CurrentItemとして設定されます。 または、ListBox が CollectionViewSourceからデータを取得すると、選択と通貨が自動的に同期されます。
XML データを使用する場合、手法は若干異なります。 例については、「 階層 XML データで Master-Detail パターンを使用する」を参照してください。
こちらも参照ください
.NET Desktop feedback