내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

XmlDataProvider 클래스

선언적 액세스할 수 있습니다 XML 데이터 바인딩에 대 한 데이터입니다.

네임스페이스:  System.Windows.Data
어셈블리:  PresentationFramework(PresentationFramework.dll)
XAML의 XMLNS: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[ContentPropertyAttribute("XmlSerializer")]
public class XmlDataProvider : DataSourceProvider, 
	IUriContext
<XmlDataProvider>
  XmlSerializer
</XmlDataProvider>

XmlDataProvider 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드XmlDataProvider새 인스턴스 초기화를 XmlDataProvider 클래스입니다.
위쪽
  이름설명
Protected 속성BaseUri 이 형식 또는 멤버는 WPF 인프라 및 사용자 코드에서 직접 사용할 수는 없습니다.
Public 속성Data내부 데이터 개체를 가져옵니다. (DataSourceProvider에서 상속됨)
Protected 속성Dispatcher현재를 가져오거나 설정 합니다. Dispatcher 개체의 UI 스레드를 사용 합니다. (DataSourceProvider에서 상속됨)
Public 속성Document가져오거나는 XmlDocument 로 사용 하는 바인딩 소스.
Public 속성Error마지막 쿼리 작업의 오류를 가져옵니다. (DataSourceProvider에서 상속됨)
Public 속성IsAsynchronous노드 컬렉션 생성 작업자 스레드 또는 활성 컨텍스트에서 수행할지를 나타내는 값을 가져오거나 설정 합니다.
Public 속성IsInitialLoadEnabled방지 또는 데이터의 자동 로드를 지연 시킬 것인지 여부를 나타내는 값을 가져오거나 설정 합니다. (DataSourceProvider에서 상속됨)
Protected 속성IsRefreshDeferred아직 해결 되지 않은 있는지 여부를 나타내는 값을 가져옵니다 DeferRefresh 를 사용 합니다. (DataSourceProvider에서 상속됨)
Public 속성Source가져오거나는 Uri 의 XML 데이터 파일을 사용 하는 바인딩 소스.
Public 속성XmlNamespaceManager가져오거나는 XmlNamespaceManager 를 실행 하는 데 XPath 쿼리 합니다.
Public 속성XmlSerializer인라인 가져옵니다 XML 콘텐츠입니다.
Public 속성XPath가져오거나는 XPath 쿼리 된 데이터 컬렉션을 생성 하는 데 사용 됩니다.
위쪽
  이름설명
Protected 메서드BeginInit이러한 초기화를 나타내는 개체인 곧 시작 합니다. 암시적 더 Refresh 일치 하는 때까지 발생 EndInit 메서드가 호출 됩니다. (DataSourceProvider에서 상속됨)
Protected 메서드BeginQuery로딩 중 하나는 인라인 준비 XML 또는 외부 XML 컬렉션을 생성 하는 파일 XML 노드. (DataSourceProvider.BeginQuery()을(를) 재정의함)
Public 메서드DeferRefresh공급자 및 연기 자동 새로 고침의 속성을 변경 하는 데 사용할 수 있는 지연 주기를 입력 합니다. (DataSourceProvider에서 상속됨)
Protected 메서드EndInit이 요소의 초기화가 완료 되었음을 나타냅니다. 이 인해 한 Refresh 다른 경우 DeferRefresh 해결 되지 않은 것입니다. (DataSourceProvider.EndInit()을(를) 재정의함)
Public 메서드Equals(Object) 지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)
Protected 메서드Finalize 개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetHashCode기본 해시 함수로 작동합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드InitialLoad기본 데이터 모델을 초기 쿼리를 시작합니다. 결과에 반환 되는 Data 속성입니다. (DataSourceProvider에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Protected 메서드OnPropertyChanged발생은 PropertyChanged 이벤트는 제공 된 인수를 사용 합니다. (DataSourceProvider에서 상속됨)
Protected 메서드OnQueryFinished(Object)파생 된 클래스 쿼리 완료 되었음을 나타내기 위해이 메서드를 호출 합니다. (DataSourceProvider에서 상속됨)
Protected 메서드OnQueryFinished(Object, Exception, DispatcherOperationCallback, Object)파생 된 클래스 쿼리 완료 되었음을 나타내기 위해이 메서드를 호출 합니다. (DataSourceProvider에서 상속됨)
Public 메서드Refresh기본 데이터 모델에 새로 고침 작업을 시작합니다. 결과에 반환 되는 Data 속성입니다. (DataSourceProvider에서 상속됨)
Public 메서드ShouldSerializeSource표시 여부를 Source 속성을 유지 해야 합니다.
Public 메서드ShouldSerializeXmlSerializer표시 여부를 XmlSerializer 속성을 유지 해야 합니다.
Public 메서드ShouldSerializeXPath표시 여부를 XPath 속성을 유지 해야 합니다.
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽
  이름설명
Public 이벤트DataChanged발생 하는 경우는 Data 속성에 새 값을 가진. (DataSourceProvider에서 상속됨)
Protected 이벤트PropertyChanged속성 값이 변경 되는 경우에 발생 합니다. (DataSourceProvider에서 상속됨)
위쪽
  이름설명
명시적 인터페이스 구현Private 이벤트INotifyPropertyChanged.PropertyChanged속성 값이 변경 되는 경우에 발생 합니다. (DataSourceProvider에서 상속됨)
명시적 인터페이스 구현Private 메서드ISupportInitialize.BeginInit이 구성 요소를 지 원하는 해당 WPF(Windows Presentation Foundation) 인프라 하며 코드에서 직접 사용할 수 없습니다. (DataSourceProvider에서 상속됨)
명시적 인터페이스 구현Private 메서드ISupportInitialize.EndInit이 구성 요소를 지 원하는 해당 WPF(Windows Presentation Foundation) 인프라 하며 코드에서 직접 사용할 수 없습니다. (DataSourceProvider에서 상속됨)
명시적 인터페이스 구현Private 속성IUriContext.BaseUri이 구성 요소를 지 원하는 해당 WPF(Windows Presentation Foundation) 인프라 하며 코드에서 직접 사용할 수 없습니다.
위쪽
보안 정보보안 정보

부분 신뢰 샌드박스에, XmlDataProvider 지정 된 데이터에 액세스할 수 있는 권한이 없는 경우 오류가 발생 합니다. 부분 신뢰 보안에 대 한 자세한 내용은 WPF 부분 신뢰 보안.

XmlDataProvider 에 액세스 하는 다음과 같은 방법으로 노출 XML 데이터입니다.

  • 인라인을 포함 시킬 수 있습니다 XML 데이터를 사용 하는 XmlDataProvider 클래스입니다.

  • 설정할 수 있습니다의 Source 속성에는 Uri 에 XML 데이터 파일.

  • 설정할 수 있는 Document 속성에는 XmlDocument.

XmlDataProvider 전체 새로 고침의 모든 바인딩 수행 하면는 XmlDocument.NodeChanged 이벤트가 발생 합니다. 특정 노드에 대 한 최적화입니다.

XmlDataProvider.IsAsynchronous 속성을 설정 true 기본적으로 어떤 의미에서는 XmlDataProvider 데이터를 검색 하 고 컬렉션을 만듭니다 XML 노드가 기본적으로 비동기적으로.

이 예제에서는 XmlDataProvider를 사용하여 XML 데이터에 바인딩하는 방법을 보여 줍니다.

XmlDataProvider 를 사용할 경우 응용 프로그램에서 데이터 바인딩을 통해 액세스할 수 있는 내부 데이터는 XML 노드의 트리일 수 있습니다. 즉, XmlDataProvider를 사용하면 XML 노드의 트리를 바인딩 소스로 손쉽게 사용할 수 있습니다.

다음 예제에서는 데이터를 Resources 섹션 내에 직접 XML 데이터 아일랜드로 포함합니다. XML 데이터 아일랜드는 <x:XData> 태그에 래핑되어야 하며 항상 단일 루트 노드(이 예제에서는 Inventory)를 포함하고 있어야 합니다.

참고참고

XML 데이터의 루트 노드에는 XML 네임스페이스를 빈 문자열로 설정하는 xmlns 특성이 있습니다. 이 특성은 XAML 페이지 내에서 인라인인 데이터 아일랜드에 XPath 쿼리를 적용하는 데 필요합니다. 이와 같이 인라인인 경우 XAML 및 결과적으로 데이터 아일랜드는 System.Windows 네임스페이스를 상속합니다. 이 때문에 XPath 쿼리가 System.Windows 네임스페이스로 정규화되어 잘못 사용되는 것을 방지하려면 네임스페이스를 공백으로 설정해야 합니다.


<StackPanel
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Background="Cornsilk">

  <StackPanel.Resources>
    <XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books">
      <x:XData>
        <Inventory xmlns="">
          <Books>
            <Book ISBN="0-7356-0562-9" Stock="in" Number="9">
              <Title>XML in Action</Title>
              <Summary>XML Web Technology</Summary>
            </Book>
            <Book ISBN="0-7356-1370-2" Stock="in" Number="8">
              <Title>Programming Microsoft Windows With C#</Title>
              <Summary>C# Programming using the .NET Framework</Summary>
            </Book>
            <Book ISBN="0-7356-1288-9" Stock="out" Number="7">
              <Title>Inside C#</Title>
              <Summary>C# Language Programming</Summary>
            </Book>
            <Book ISBN="0-7356-1377-X" Stock="in" Number="5">
              <Title>Introducing Microsoft .NET</Title>
              <Summary>Overview of .NET Technology</Summary>
            </Book>
            <Book ISBN="0-7356-1448-2" Stock="out" Number="4">
              <Title>Microsoft C# Language Specifications</Title>
              <Summary>The C# language definition</Summary>
            </Book>
          </Books>
          <CDs>
            <CD Stock="in" Number="3">
              <Title>Classical Collection</Title>
              <Summary>Classical Music</Summary>
            </CD>
            <CD Stock="out" Number="9">
              <Title>Jazz Collection</Title>
              <Summary>Jazz Music</Summary>
            </CD>
          </CDs>
        </Inventory>
      </x:XData>
    </XmlDataProvider>
  </StackPanel.Resources>

  <TextBlock FontSize="18" FontWeight="Bold" Margin="10"
    HorizontalAlignment="Center">XML Data Source Sample</TextBlock>
  <ListBox
    Width="400" Height="300" Background="Honeydew">
    <ListBox.ItemsSource>
      <Binding Source="{StaticResource InventoryData}"
               XPath="*[@Stock='out'] | *[@Number>=8 or @Number=3]"/>
    </ListBox.ItemsSource>

    <!--Alternatively, you can do the following. -->
    <!--<ListBox Width="400" Height="300" Background="Honeydew"
      ItemsSource="{Binding Source={StaticResource InventoryData},
      XPath=*[@Stock\=\'out\'] | *[@Number>\=8 or @Number\=3]}">-->

    <ListBox.ItemTemplate>
      <DataTemplate>
        <TextBlock FontSize="12" Foreground="Red">
          <TextBlock.Text>
            <Binding XPath="Title"/>
          </TextBlock.Text>
        </TextBlock>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</StackPanel>


이 예제에서 알 수 있듯이 특성 구문에서 동일한 바인딩 선언을 만들려면 특수 문자를 적절하게 이스케이프해야 합니다. 자세한 내용은 XML 문자 엔터티 및 XAML을 참조하십시오.

이 예제를 실행하면 ListBox에서 다음 항목을 표시합니다. 이 항목들은 Books 아래에서 Stock 값이 "out"이거나 Number 값이 3 또는 8보다 크거나 같은 모든 요소의 Title입니다. XmlDataProvider 에서 설정한 XPath 값은 Books 요소만 노출된다는 것을 나타내므로(기본적으로 필터 설정) CD 항목은 반환되지 않습니다.

XPath 예제

이 예제에서는 DataTemplate에서 TextBlock 바인딩의 XPath가 "Title"로 설정되어 있으므로 책 제목이 표시됩니다. ISBN과 같은 특성 값을 표시하려면 해당 XPath 값을 "@ISBN"으로 설정합니다.

WPF에서 XPath 속성은 XmlNode.SelectNodes 메서드로 처리합니다. XPath 쿼리를 수정하여 다른 결과를 얻을 수 있습니다. 다음은 이전 예제에서 바인딩된 ListBox에 대한 XPath 쿼리의 몇 가지 예입니다.

  • XPath="Book[1]"은 첫 번째 책 요소("XML in Action")를 반환합니다. XPath 인덱스는 0이 아닌 1부터 시작합니다.

  • XPath="Book[@*]"은 특성이 있는 모든 책 요소를 반환합니다.

  • XPath="Book[last()-1]"은 마지막에서 두 번째 책 요소("Introducing Microsoft .NET")를 반환합니다.

  • XPath="*[position()>3]"는 처음 세 개를 제외한 모든 책 요소를 반환합니다.

XPath 쿼리를 실행하면 XmlNode 또는 XmlNode 목록을 반환합니다. XmlNode 는 CLR(공용 언어 런타임) 개체이므로 Path 속성을 사용하여 CLR(공용 언어 런타임) 속성에 바인딩할 수 있습니다. 앞의 예제를 다시 살펴봅니다. 예제의 나머지는 그대로 두고 TextBlock 바인딩을 다음과 같이 변경하면 ListBox에 반환된 XmlNodes의 이름이 표시됩니다. 이 경우 반환된 모든 노드의 이름은 "Book"입니다.


<TextBlock FontSize="12" Foreground="Red">
  <TextBlock.Text>
    <Binding Path="Name"/>
  </TextBlock.Text>
</TextBlock>


일부 응용 프로그램에서는 XAML 페이지의 소스 내에 XML을 데이터 아일랜드로 포함하면 컴파일할 때 정확한 데이터 내용이 알려져야 하기 때문에 불편할 수 있습니다. 따라서 다음 예제와 같이 외부 XML 파일에서 데이터를 가져올 수도 있습니다.


<XmlDataProvider x:Key="BookData" Source="data\bookdata.xml" XPath="Books"/>


XML 데이터가 원격 XML 파일에 있는 경우 다음과 같이 Source 특성에 적절한 URL을 할당하여 데이터에 대한 액세스를 정의할 수 있습니다.

<XmlDataProvider x:Key="BookData" Source="http://MyUrl" XPath="Books"/>

.NET Framework

4.5, 4, 3.5, 3.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.
이 형식의 static(Visual Basic의 경우 Shared) 모든 공용 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft. All rights reserved.