Gewusst wie: Binden an eine ADO.NET-Datenquelle
In diesem Beispiel wird gezeigt, wie ein Windows Presentation Foundation (WPF) ListBox-Steuerelement an ein ADO.NET DataSet
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 OleDbDataAdapter
-Objekt erstellt. Das OleDbDataAdapter
-Objekt führt eine SQL-Anweisung des Typs Structured Query Language (SQL) 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 von OleDbDataAdapter
aufgerufen wird. Die DataTable
in diesem Beispiel heißt BookTable
. Im Beispiel wird dann die DataContext-Eigenschaft des ListBox für 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;
}
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
Dann können wir die ItemsSource-Eigenschaft der ListBox an die BookTable
von DataSet
binden:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate
ist das DataTemplate, das 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>
IntColorConverter
konvertiert int
in eine Farbe. Mit Hilfe dieses Konverters erscheint die Background-Farbe des dritten TextBlock grün, wenn der Wert von NumPages
kleiner als 350 ist, und ansonsten rot. Die Implementierung des Konverters wird hier nicht gezeigt.
Weitere Informationen
.NET Desktop feedback
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für