Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
.NET Desktop feedback