Cómo: Enlazar a un origen de datos ADO.NET
En este ejemplo se muestra cómo enlazar un control ListBox de Windows Presentation Foundation (WPF) a un elemento DataSet
de ADO.NET.
Ejemplo
En este ejemplo, se utiliza un objeto OleDbConnection
para conectar al origen de datos, que es un archivo Access MDB
especificado en la cadena de conexión. Una vez establecida la conexión, se crea un objeto OleDbDataAdapter
. El objeto OleDbDataAdapter
ejecuta una instrucción de Lenguaje de consulta estructurado (SQL) determinada para recuperar el conjunto de registros de la base de datos. Los resultados del comando de SQL se almacenan en una DataTable
de DataSet
mediante una llamada al método Fill
de OleDbDataAdapter
. El elemento DataTable
de este ejemplo se denomina BookTable
. A continuación, en el ejemplo se establece la propiedad DataContext de ListBox en el 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;
}
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, se puede enlazar la propiedad ItemsSource de ListBox a BookTable
de DataSet
:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate
es el elemento DataTemplate que define cómo se muestran 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 valor int
en un color. Mediante el uso de este convertidor, el color Background del tercer elemento TextBlock se muestra verde si el valor de NumPages
es inferior a 350; de lo contrario, se muestra rojo. La implementación del convertidor no se muestra aquí.
Vea también
.NET Desktop feedback