Compartilhar via


Como: Acoplar uma Fonte de Dados ADO.NET

Este exemplo mostra como vincular um controle ListBox Windows Presentation Foundation (WPF) a um DataSet ADO.NET.

Exemplo

Nesse exemplo, um objeto OleDbConnection é usado para conectar-se à fonte de dados que é um arquivo Access MDB que está especificado na string de conexão. Depois que a conexão estiver estabelecida, um objeto OleDbDataAdpater será criado. O objeto OleDbDataAdpater executará uma instrução Structured Query Language (SQL) de seleção para recuperar o conjunto de registros do banco de dados. Os resultados do comando SQL serão armazenados em uma DataTable do DataSet chamando o método Fill do OleDbDataAdapter. A DataTable nesse exemplo é denominada BookTable. O exemplo, em seguida, define a propriedade DataContext da ListBox como o objeto DataSet.

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;
}

Em seguida, podemos vincular a propriedade ItemsSource da ListBox ao BookTable do DataSet:

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

BookItemTemplate é o DataTemplate que define como os dados aparecem:

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

O IntColorConverter converte um int para uma cor. Com o uso desse conversor, a cor do Background do terceiro TextBlock aparece verde se o valor de NumPages for menor que 350 e vermelho caso contrário. A implementação do conversor não é mostrada aqui. For the complete sample, see VinculParar Para um ParaDO.NET DParatParaSet exemplo.

Consulte também

Conceitos

Revisão de Associação de Dados

Referência

BindingListCollectionView

Outros recursos

Exemplos de ligação de dados

Data Binding How-to Topics