2015-02-24 35 views
0

我試圖將List數據綁定到DataGridBining Datagrid both ways

到目前爲止,似乎工作只有一個辦法 - 當我手動更改顯示DataGrid輸入了什麼東西,在List被更新,但不反之亦然(DataGrid當我在List改變的東西不改變)。

這是我DataGrid

<DataGrid x:Name="MyDataGrid" AutoGenerateColumns="false" ItemsSource="{Binding}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="ColName" Binding="{Binding Name}" Header="Name" /> 
      <DataGridTextColumn x:Name="ColProperty" Binding="{Binding MyProperty}" Header="My Property" /> 
     </DataGrid.Columns> 
</DataGrid> 

輸入我的數據如下:

Public Class Res 
    Public Shared TableData As New List(Of DataItem) 
End Class 

Public Class DataItem 
    Public Property Name() As String 
    Public Property MyProperty() As String 
End Class 

Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
    Dim entry As New DataItem 
    entry.Name = "Test Name" 
    entry.MyProperty = "Test Property" 
    Res.TableData.Add(entry) 
    Me.MyDataGrid.ItemsSource = Res.TableData 
End Sub 

但是,當我試圖改變我的數據,通過執行類似:

Res.TableData.Item(0).Name = "Changed" 

它不起作用,DataGrid中顯示的值不會改變。

這是爲什麼?我如何更新我的DataGrid

如果有更好的方法將數據綁定到DataGrid,我很樂意提供建議。

+0

您是否嘗試過使用'{Binding Name,Mode = TwoWay}',並且您是否實現了['INotifyPropertyChanged'接口](https://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged (v = vs.110).aspx)在你的數據類? – Sheridan 2015-02-24 13:23:23

+0

我試過'{綁定名稱,模式= TwoWay}',並沒有改變任何東西。不知道你的意思後者。你能否提供一些例子? – 2015-02-24 13:27:18

+0

你如何試試我爲你提供的鏈接? – Sheridan 2015-02-24 13:29:15

回答

0

經過一番更多的搜索,發現一個解決方案,工作。
我做什麼,我說:

Me.MyDataGrid.Items.Refresh() 

後,我在List改變的值。

謝謝。

相關問題