I have been trying to digest a common methodology that is standard practice for binding a WPF datagrid to an underlying table from a typed dataset in VB.Net. Most examples I have seen are XAML-based, but I would like to be
able to define a binding at runtime in VB.Net code so I can use one datagrid to display data from multiple tables on demand.
I managed to piece together a test project that propagated changes made in the datagrid back to the actual database, but the binding I used was static XAML and I can't seem to get the same functionality in straight VB code.
Here is part of the code:
On the datagrid SelectionChanged event handler I processed the update:
Private Sub MyDataGrid_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
Using dtChanges As TestTableDataTable = CType(dsWHOEMR_DEV.TestTable.GetChanges,
If Not dtChanges Is Nothing Then
Using ta As New TestTableTableAdapter
If ta.Update(dtChanges) > 0 Then
Debug.WriteLine("row NOT updated")
I tried to do a bind in code this way:
Dim myBinding As New Binding
'table in typed dataset that contains data I want to display
'column from dataset table I want to bind to and display in my grid
myBinding.Path = New System.Windows.PropertyPath("PatID")
Dim NewColumn As New Microsoft.Windows.Controls.DataGridTextColumn
NewColumn.Binding = myBinding
NewColumn.Header = "PatID"
Nothing displayed in the grid other than the column header.
Has anyone been able to do this kind of binding successfully?
Feb 18, 2009 at 12:24 PM
You have to set the source binding on the DataGrid.ItemsSource and for the column you just need to set the path.