Share via


방법: 계층적 데이터에 마스터-세부 패턴 사용

업데이트: 2007년 11월

이 예제에서는 마스터-세부 시나리오를 구현하는 방법을 보여 줍니다.

예제

이 예제에서 LeagueList는 Leagues 컬렉션입니다. 각 League에는 Name 및 Divisions 컬렉션이 있으며 각 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는 다른 두 ListBox 컨트롤의 선택 항목을 추적합니다.

마스터-세부 예제

이 예제에서 주목해야 할 두 가지 내용은 다음과 같습니다.

  1. ListBox 컨트롤은 같은 소스에 바인딩됩니다. 바인딩의 Path 속성을 설정하여 ListBox에 표시할 데이터의 수준을 지정할 수 있습니다.

  2. 추적하는 선택 항목의 ListBox 컨트롤에서 IsSynchronizedWithCurrentItem 속성을 true로 설정해야 합니다. 이 속성을 설정하면 선택한 항목이 항상 CurrentItem으로 설정됩니다. ListBoxCollectionViewSource에서 데이터를 가져오는 경우에는 선택 항목과 통화가 자동으로 동기화됩니다.

전체 샘플을 보려면 ObjectDataProvider를 사용한 마스터-세부 시나리오 샘플을 참조하십시오. XML 데이터를 사용할 경우에는 방법이 약간 다릅니다. 예제를 보려면 방법: 계층적 XML 데이터에 마스터-세부 패턴 사용을 참조하십시오.

참고 항목

작업

방법: 선택에 따라 수집 및 표시 정보에 바인딩

개념

데이터 바인딩 개요

데이터 템플릿 개요

참조

HierarchicalDataTemplate

기타 리소스

데이터 바인딩 샘플

데이터 바인딩 방법 항목