방법: 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(공용 언어 런타임) 개체를 구현하는 방법에 대한 자세한 내용은 바인딩 소스 개요를 참조하십시오.