Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo esempio viene illustrato come associare un controllo windows Presentation Foundation (WPF) ListBox a un controllo ADO.NET DataSet.
Esempio
In questo esempio viene usato un oggetto OleDbConnection per connettersi all'origine dati, ovvero un file Access MDB specificato nella stringa di connessione. Dopo aver stabilito la connessione, viene creato un oggetto OleDbDataAdapter. L'oggetto OleDbDataAdapter esegue un'istruzione SQL (Structured Query Language) selezionata per recuperare il recordset dal database. I risultati del comando SQL vengono archiviati in un DataTable del DataSet chiamando il metodo Fill del OleDbDataAdapter. Il DataTable in questo esempio è denominato BookTable. Nell'esempio viene quindi impostata la proprietà DataContext del ListBox sull'oggetto 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
È quindi possibile associare la proprietà ItemsSource del ListBox a BookTable del DataSet:
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
BookItemTemplate è il DataTemplate che definisce la modalità di visualizzazione dei dati:
<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>
Il IntColorConverter converte un int in un colore. Con l'uso di questo convertitore, il colore Background del terzo TextBlock appare verde se il valore di NumPages è minore di 350 e rosso in caso contrario. L'implementazione del convertitore non è illustrata qui.
Vedere anche
.NET Desktop feedback