방법: ADO.NET 데이터 소스 바인딩
이 예제에서는 WPF(Windows Presentation Foundation) ListBox 컨트롤을 ADO.NET DataSet
에 바인딩하는 방법을 보여 줍니다.
예제
이 예에서는 OleDbConnection
개체를 사용하여 연결 문자열에 지정된 Access MDB
파일인 데이터 소스에 연결합니다. 연결이 설정되고 나면 OleDbDataAdapter
개체가 생성됩니다. OleDbDataAdapter
개체는 select SQL(구조적 언어 쿼리) 명령문을 실행하여 데이터베이스에서 레코드 집합을 검색합니다. SQL 명령의 결과는 OleDbDataAdapter
의 Fill
메서드를 호출하여 DataSet
의 DataTable
에 저장됩니다. 이 예에서 DataTable
은 BookTable
로 이름이 지정됩니다. 그런 다음, 예제에서 ListBox의 DataContext 속성을 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;
}
Private myDataSet As DataSet
Private Sub OnInit(ByVal sender As Object, ByVal e As EventArgs)
Dim mdbFile As String = Path.Combine(AppDataPath, "BookData.mdb")
Dim connString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile)
Dim conn As New OleDbConnection(connString)
Dim adapter As 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
End Sub
그런 다음, ListBox의 ItemsSource 속성을 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보다 작은 경우 세 번째 TextBlock의 Background 색은 녹색으로 표시되고 그렇지 않으면 빨간색으로 표시됩니다. 변환기의 구현은 여기에 표시되지 않습니다.
참고 항목
.NET Desktop feedback
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기