Freigeben über


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-Objekt 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-Element auf das DataSet-Objekt festgelegt.

    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
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.

Siehe auch

Referenz

BindingListCollectionView

Konzepte

Übersicht über Datenbindung

Weitere Ressourcen

Gewusst-wie-Themen zur Datenbindung