Procédure : Effectuer une liaison à une source de données ADO.NETHow to: Bind to an ADO.NET Data Source

Cet exemple montre comment lier un contrôle Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) ListBox à un 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.

ExempleExample

Dans cet exemple, un objet OleDbConnection est utilisé pour se connecter à la source de données qui est un fichier Access MDB spécifié dans la chaîne de connexion.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. Une fois la connexion établie, un objet OleDbDataAdapter est créé.After the connection is established, an OleDbDataAdapter object is created. L’objet OleDbDataAdapter exécute une instruction SELECT langage SQL (SQL) pour récupérer le jeu d’enregistrements de la base de données.The OleDbDataAdapter object executes a select Structured Query Language (SQL) statement to retrieve the recordset from the database. Les résultats de la commande SQL sont stockés dans un DataTable du DataSet en appelant la méthode Fill de l' OleDbDataAdapter.The results from the SQL command are stored in a DataTable of the DataSet by calling the Fill method of the OleDbDataAdapter. Dans cet exemple, la DataTable est nommée BookTable.The DataTable in this example is named BookTable. L’exemple définit ensuite la propriété DataContext de la ListBox sur l’objet DataSet.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

Nous pouvons ensuite lier la propriété ItemsSource de la ListBox à BookTable du 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 est la DataTemplate qui définit la façon dont les données s’affichent :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 convertit un int en une couleur.The IntColorConverter converts an int to a color. Avec l’utilisation de ce convertisseur, la couleur Background du troisième TextBlock s’affiche en vert si la valeur de NumPages est inférieure à 350 et rouge dans le cas contraire.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. L’implémentation du convertisseur n’est pas décrite ici.The implementation of the converter is not shown here.

Voir aussiSee also