Zum Thema XAML entwicklung mit WPF findet sich noch immer wenig Information im Web. Speziell die klassischen Ansätze der Datenbindung werden kaum behandelt. Dieser Artikel erklärt wie man ein klassisches Dataset als Quelle verwenden kann.
Im Code der XAMl Datei wird eine übliche SQL Abfrage durchgeführt und die Daten in ein Dataset geschrieben. Zur Darstellung wird ein Listview WPF Control verwendet. Die Bindung erfolgt an die Eigenschaft DataContext. So weit meine Versuche gereicht haben funktioniert dies im Initializied Event des Window.
Dim adapter As New SqlDataAdapter()
Dim customers As DataSet = New DataSet
Private Sub Window2_Initialized(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Initialized
Dim constr As String
constr = System.Configuration.ConfigurationManager.ConnectionStrings("NorthwindConnectionString").ConnectionString
Using connection As New SqlConnection(constr)
adapter.SelectCommand = New SqlCommand("select * from customers", connection)
Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)
connection.Open()
adapter.Fill(customers)
ListView1.DataContext = customers.Tables(0).DefaultView
End Using
End Sub Dieses Code Schnippsel ist schon vorbereitet für ein späteres Update. Deshalb die Deklaration des Datasets als Attribut der Klasse und nicht innerhalb der Methode.
Zur Darstellung wird wie schon erwähnt ListView Control verwendet in das ein Gridview Control eingebettet wird. Das Listview dient als Container und beinhaltet auch das Attribut ItemsSource = Binding. Das Gridview Control hat dann wieder eine Reihe von GridViewColumn Kind Elementen. Diese werden an das eigentliche Feld gebunden. Eingeleitet wird die Bindung mit dem Binding Keywort. Als nächstes wird im Path Attribut zugewiesen an welche Eigenschaft ( hier Feld) gebunden wird.
<
Window x:Class="Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DatenHannes1" Height="300" Width="300">
<Grid>
<ListView Margin="8,19,12,100" Name="ListView1" ItemsSource="{Binding}" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=CustomerID}"></GridViewColumn>
</GridView></ListView.View>
</ListView>
</Grid>
</Window> Als Alternatives Template zur Darstellung gibt es zb auch ein ListBoxItemtemplate in dessen DataTemplate man ein Feld Binding deklarieren kann.