Gewusst wie: Binden an eine ADO.NET-Datenquelle
Aktualisiert: November 2007
In diesem Beispiel wird gezeigt, wie ein Windows Presentation Foundation (WPF)ListBox-Steuerelement an ein ADO.NETDataSet gebunden wird.
Beispiel
In diesem Beispiel wird ein OleDbConnection-Objekt zum Herstellen der Verbindung mit der Datenquelle verwendet, die als Access MDB-Datei in der Verbindungszeichenfolge angegeben ist. Nach dem Herstellen der Verbindung wird ein OleDbDataAdpater-Objekt erstellt. Das OleDbDataAdpater-Objekt führt eine Select-Structured Query Language (SQL)-Anweisung aus, um das Recordset aus der Datenbank abzurufen. Die Ergebnisse des SQL-Befehls werden in einer DataTable für das DataSet gespeichert, indem die Fill-Methode für den OleDbDataAdapter aufgerufen wird. Die DataTable in diesem Beispiel hat den Namen BookTable. Im Beispiel wird dann die DataContext-Eigenschaft für das ListBox auf das DataSet-Objekt festgelegt.
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;
}
Dann kann die ItemsSource-Eigenschaft für das ListBox an die BookTable für das DataSet gebunden werden:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate ist die DataTemplate, die definiert, wie die Daten angezeigt werden:
<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>
Der IntColorConverter konvertiert int in eine Farbe. Mithilfe dieses Konverters wird als Background-Farbe für den dritten TextBlock Grün verwendet, wenn der Wert für NumPages kleiner als 350 ist. Andernfalls wird Rot verwendet. Die Implementierung des Konverters wird hier nicht erläutert. Das vollständige Beispiel finden Sie unter Beispiel zum Binden an ein ADO.NET-DataSet.