다음을 통해 공유


방법: XDocument, XElement 또는 LINQ for XML 쿼리 결과에 바인딩

업데이트: 2008년 7월

이 예제에서는 XDocument를 사용하여 XML 데이터를 ItemsControl에 바인딩하는 방법을 설명합니다.

예제

다음 XAML 코드에서는 ItemsControl을 정의하고 Planet 데이터 형식의 데이터 템플릿을 http://planetsNS XML 네임스페이스에 포함합니다. 네임스페이스를 사용하는 XML 데이터 형식에는 중괄호로 묶은 네임스페이스가 포함되어야 하며, XAML 태그 확장이 나타나는 위치에 네임스페이스를 사용하는 경우에는 네임스페이스 앞에 중괄호 이스케이프 시퀀스를 추가해야 합니다. 이 코드는 XElement 클래스의 ElementAttribute 메서드에 해당하는 동적 속성에 바인딩됩니다. 동적 속성을 사용하면 XAML을 메서드 이름을 공유하는 동적 속성에 바인딩할 수 있습니다. 자세한 내용은 LINQ to XML 동적 속성을 참조하십시오. XML에 대한 기본 네임스페이스 선언은 특성 이름에 적용되지 않습니다.

<StackPanel Name="stacky">
  <StackPanel.Resources>
    <DataTemplate DataType="{}{http://planetsNS}Planet" >
      <StackPanel Orientation="Horizontal">
        <TextBlock Width="100" Text="{Binding Path=Element[{http://planetsNS}DiameterKM].Value}" />
        <TextBlock Width="100" Text="{Binding Path=Attribute[Name].Value}" />
        <TextBlock Text="{Binding Path=Element[{http://planetsNS}Details].Value}" /> 
      </StackPanel>
    </DataTemplate>
  </StackPanel.Resources>


...


  <ItemsControl 
    ItemsSource="{Binding }" >
  </ItemsControl>
</StackPanel>

다음 C# 코드에서는 Load를 호출하고 http://planetsNS XML 네임스페이스에서 SolarSystemPlanets이라는 요소의 모든 하위 요소에 대한 스택 패널 데이터 컨텍스트를 설정합니다.

planetsDoc = XDocument.Load("../../Planets.xml");
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements();

XML 데이터는 ObjectDataProvider를 사용하여 XAML 리소스로 저장할 수 있습니다. 전체 예제는 L2DBForm.xaml 소스 코드를 참조하십시오. 다음 샘플에서는 코드에서 데이터 컨텍스트를 개체 리소스로 설정하는 방법을 보여 줍니다.

planetsDoc = (XDocument)((ObjectDataProvider)Resources["justTwoPlanets"]).Data;
stacky.DataContext = planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements();

ElementAttribute에 매핑되는 동적 속성에서는 XAML 내에서의 유연성을 제공합니다. 또한 코드를 LINQ for XML 쿼리 결과에 바인딩할 수도 있습니다. 이 예제에서는 요소 값별로 정렬된 쿼리 결과에 바인딩됩니다.

stacky.DataContext =
from c in planetsDoc.Element("{http://planetsNS}SolarSystemPlanets").Elements()
orderby Int32.Parse(c.Element("{http://planetsNS}DiameterKM").Value)
select c;

참고 항목

작업

LINQ to XML 데이터 바인딩 샘플

개념

바인딩 소스 개요

LINQ to XML을 사용한 WPF 데이터 바인딩 개요

LINQ to XML을 사용한 WPF 데이터 바인딩 예제

LINQ to XML 동적 속성

변경 기록

날짜

변경 내용

이유

2008년 7월

항목이 추가되었습니다.

향상된 기능 관련 정보