다음을 통해 공유


방법: ADO.NET 데이터 소스 바인딩

업데이트: 2007년 11월

이 예제에서는 WPF(Windows Presentation Foundation)ListBox 컨트롤을 ADO.NETDataSet에 바인딩하는 방법을 보여 줍니다.

예제

이 예제에서는 연결 문자열에 지정된 Access MDB 파일인 데이터 소스에 연결하는 데 OleDbConnection 개체가 사용됩니다. 연결이 설정되면 OleDbDataAdpater 개체가 만들어집니다. OleDbDataAdpater 개체는 Select SQL(구조적 쿼리 언어) 문을 실행하여 데이터베이스에서 레코드 집합을 검색합니다. SQL 명령의 결과는 OleDbDataAdapter의 Fill 메서드를 호출하여 DataSet의 DataTable에 저장됩니다. 이 예제에서 DataTable의 이름은 BookTable로 지정됩니다. 그런 다음 이 예제에서는 ListBoxDataContext 속성을 DataSet 개체로 설정합니다.

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;
}

그러면 ListBoxItemsSource 속성을 DataSet의 BookTable에 바인딩할 수 있습니다.

<ListBox Name="myListBox" Height="200"
  ItemsSource="{Binding Path=BookTable}"
  ItemTemplate  ="{StaticResource BookItemTemplate}"/>

BookItemTemplate은 데이터가 나타나는 방식을 정의하는 DataTemplate입니다.

<StackPanel.Resources>
  <c:IntColorConverter x:Key="MyConverter"/>

  <DataTemplate x:Key="BookItemTemplate">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="250" />
        <ColumnDefinition Width="100" />
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <TextBlock Text="{Binding Path=Title}" Grid.Column="0"
        FontWeight="Bold" />
      <TextBlock Text="{Binding Path=ISBN}" Grid.Column="1" />
      <TextBlock Grid.Column="2" Text="{Binding Path=NumPages}"
                 Background="{Binding Path=NumPages,
          Converter={StaticResource MyConverter}}"/>
    </Grid>
  </DataTemplate>
</StackPanel.Resources>

IntColorConverter는 int를 색으로 변환합니다. 이 변환기를 사용할 경우 NumPages의 값이 350 미만이면 세 번째 TextBlockBackground 색이 녹색으로 나타나고 그렇지 않으면 빨간색으로 나타납니다. 여기에서는 변환기의 구현을 보여 주지 않습니다. 전체 샘플을 보려면 ADO.NET 데이터 집합 바인딩 샘플을 참조하십시오.

참고 항목

개념

데이터 바인딩 개요

참조

BindingListCollectionView

기타 리소스

데이터 바인딩 샘플

데이터 바인딩 방법 항목