Compartir a través de


Cómo: Enlazar a un origen de datos de ADO.NET

En este ejemplo se muestra cómo enlazar un control de Windows Presentation Foundation (WPF) ListBox a un ADO.NET DataSet.

Ejemplo

En este ejemplo, se usa un OleDbConnection objeto para conectarse al origen de datos, que es un Access MDB archivo especificado en la cadena de conexión. Una vez establecida la conexión, se crea un OleDbDataAdapter objeto . El objeto OleDbDataAdapter ejecuta una sentencia SQL SELECT para recuperar el conjunto de resultados de la base de datos. Los resultados del comando SQL se almacenan en un DataTable de mediante DataSet una llamada al Fill método de OleDbDataAdapter. DataTable en este ejemplo se denomina BookTable. A continuación, el ejemplo establece la DataContext propiedad de en ListBox el DataSet objeto .

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

A continuación, podemos enlazar la ItemsSource propiedad de a ListBoxBookTable de :DataSet

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

BookItemTemplate es el DataTemplate que define cómo aparecen los datos:

<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 convierte un objeto int en un color. Con el uso de este convertidor, el Background color del tercero TextBlock aparece verde si el valor de NumPages es menor que 350 y rojo de lo contrario. La implementación del convertidor no se muestra aquí.

Consulte también