다음을 통해 공유


방법: XAML의 바인딩에 사용할 수 있는 데이터 만들기

업데이트: 2007년 11월

이 항목에서는 응용 프로그램의 필요에 따라 XAML(Extensible Application Markup Language)의 바인딩에 사용할 수 있게 데이터를 만드는 다양한 방법을 설명합니다.

예제

XAML에서 바인딩하고자 하는 CLR(공용 언어 런타임) 개체가 있는 경우 개체를 바인딩에서 사용할 수 있게 만드는 방법은 해당 개체를 리소스로 정의하여 x:Key를 부여하는 것입니다. 다음 예제에는 PersonName이라는 문자열 속성과 함께 Person 개체가 있습니다. Person 개체는 SDKSample이라는 네임스페이스에 정의되어 있습니다.

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  SizeToContent="WidthAndHeight"
  Title="Simple Data Binding Sample">

  <Window.Resources>
    <src:Person x:Key="myDataSource" PersonName="Joe"/>


...


</Window.Resources>

그리고 나서 다음 예제와 같이 XAML의 개체에 바인딩할 수 있습니다.

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

또는 다음 예제와 같이 ObjectDataProvider 클래스를 사용할 수 있습니다.

<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
  <ObjectDataProvider.ConstructorParameters>
    <system:String>Joe</system:String>
  </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>

같은 방법으로 바인딩을 정의합니다.

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

이 특정 예제에서 결과는 같습니다. 즉, 텍스트 콘텐츠가 Joe인 TextBlock을 갖게 됩니다. 그러나 ObjectDataProvider 클래스는 메서드의 결과에 바인딩하는 기능과 같은 기능을 제공합니다. 이와 같은 기능이 필요한 경우 ObjectDataProvider 클래스 사용을 선택할 수 있습니다.

하지만 이미 만들어진 개체에 바인딩하는 경우 다음 예제와 같이 코드에서 DataContext를 설정해야 합니다.

DataSet myDataSet;

private void OnInit(object sender, EventArgs e)
{
  string mdbFile = Path.Combine(AppDataPath, "BookData.mdb");
  string connString = string.Format(
      "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
  OleDbConnection conn = new OleDbConnection(connString);
  OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM BookTable;", conn);

  myDataSet = new DataSet();
  adapter.Fill(myDataSet, "BookTable");

  // myListBox is a ListBox control.
  // Set the DataContext of the ListBox to myDataSet
  myListBox.DataContext = myDataSet;
}

전체 샘플을 보려면 단순 바인딩 샘플ADO.NET 데이터 집합 바인딩 샘플을 참조하십시오.

XmlDataProvider 클래스를 사용하여 바인딩할 XML 데이터에 액세스하려면 방법: XMLData Provider 및 XPath 쿼리를 사용하여 XML 데이터에 바인딩을 참조하십시오. ObjectDataProvider 클래스를 사용하여 바인딩할 XML 데이터에 액세스하려면 방법: XDocument, XElement 또는 LINQ for XML 쿼리 결과에 바인딩을 참조하십시오.

바인딩할 데이터를 지정하는 다양한 방법에 대한 자세한 내용은 방법: 바인딩 소스 지정을 참조하십시오. 바인딩할 수 있는 데이터 형식이나 바인딩을 위해 사용자 고유의 CLR(공용 언어 런타임) 개체를 구현하는 방법에 대한 자세한 내용은 바인딩 소스 개요를 참조하십시오.

참고 항목

개념

데이터 바인딩 개요

기타 리소스

데이터 바인딩 샘플

데이터 바인딩 방법 항목