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