Vorgehensweise: Binden an eine ADO.NET-DatenquelleHow to: Bind to an ADO.NET Data Source

Dieses Beispiel zeigt, wie Sie binden ein Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) ListBox Steuerelement an eine ADO.NET DataSet.This example shows how to bind a Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) ListBox control to an ADO.NET DataSet.

BeispielExample

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.In this example, an OleDbConnection object is used to connect to the data source which is an Access MDB file that is specified in the connection string. Nach dem Herstellen der Verbindung wird ein OleDbDataAdapter-Objekt erstellt.After the connection is established, an OleDbDataAdapter object is created. Das OleDbDataAdapter-Objekt führt eine SQL-Anweisung des Typs Strukturierte Abfragesprache (Structured Query Language; SQL)Structured Query Language (SQL) aus, um das Recordset aus der Datenbank abzurufen.The OleDbDataAdapter object executes a select Strukturierte Abfragesprache (Structured Query Language; SQL)Structured Query Language (SQL) statement to retrieve the recordset from the database. Die Ergebnisse des SQLSQL-Befehls werden in einer DataTable für das DataSet gespeichert, indem die Fill-Methode von OleDbDataAdapter aufgerufen wird.The results from the SQLSQL command are stored in a DataTable of the DataSet by calling the Fill method of the OleDbDataAdapter. Die DataTable in diesem Beispiel heißt BookTable.The DataTable in this example is named BookTable. Anschließend wird im Beispiel die DataContext Eigenschaft der ListBox auf die DataSet Objekt.The example then sets the DataContext property of the ListBox to the DataSet object.

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

Können wir binden, klicken Sie dann die ItemsSource Eigenschaft der ListBox zu BookTable von der DataSet:We can then bind the ItemsSource property of the ListBox to BookTable of the DataSet:

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

BookItemTemplate ist die DataTemplate , die definiert, wie die Daten angezeigt:BookItemTemplate is the DataTemplate that defines how the data appears:

<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.The IntColorConverter converts an int to a color. Mit der Verwendung dieses Konverters der Background Farbe des dritten TextBlock grün wenn der Wert des NumPages andernfalls wird von höchstens 350 und Rot.With the use of this converter, the Background color of the third TextBlock appears green if the value of NumPages is less than 350 and red otherwise. Die Implementierung des Konverters wird hier nicht gezeigt.The implementation of the converter is not shown here.

Siehe auchSee also