Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie ein ListBox-Steuerelement von Windows Presentation Foundation (WPF) an ein ADO.NET-DataSet
gebunden wird.
Beispiel
In diesem Beispiel wird ein OleDbConnection
-Objekt verwendet, um eine Verbindung mit der Datenquelle herzustellen, bei der es sich um eine Access MDB
Datei handelt, die in der Verbindungszeichenfolge angegeben ist. Nachdem die Verbindung hergestellt wurde, wird ein OleDbDataAdapter
-Objekt erstellt. Das OleDbDataAdapter
-Objekt führt eine 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 von OleDbDataAdapter
aufgerufen wird. Die DataTable
in diesem Beispiel heißt BookTable
. Im Beispiel wird dann die DataContext-Eigenschaft des 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;
}
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
Anschließend können wir die Eigenschaft ItemsSource des ListBox an die BookTable
des DataSet
verknüpfen:
<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>
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 angezeigt.
Weitere Informationen
.NET Desktop feedback