我需要在运行时进行绑定,因为DataGrid将绑定到不同的数据源和/或类对象。我有两个课程CA和CB。在CB中,有一种设置绑定的方法。但下面简单的方法只设置单向绑定。怎么做双向绑定? I.E.当List<CA>
列表中的元素发生更改时,DataGrid1将自动更新。
class CA
{
private int a = 1;
private string b = "";
private bool c = true;
public int A { get { return a; } set { a = value; } }
public string B { get { return b; } set { b = value; } }
public bool C { get { return c; } set { c = value; } }
}
class CB
{
List<CA> datalist = new List<CA>();
private void SetBinding(ref List<CA> ca, ref DataGrid dg)
{
dg.ItemsSource = ca;
}
}
答案 0 :(得分:2)
为了正确绑定,您的类CA应该实现INotifyPropertyChanged接口。请参阅:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx 并且所有属性都应该引发propertyChanged事件以通知数据绑定控件。
在这里您可以找到简单的示例:http://msdn.microsoft.com/en-us/library/ms229614.aspx
另外,我建议使用ObservableCollection而不是List with data data,因为它具有开箱即用的INotifyPropertyChanged,并通知数据绑定控制元素的添加,删除和更改。
答案 1 :(得分:1)
您的类“CA”需要实现INotifyPropertyChanged,以便更改要在数据网格中反映的CA对象。
如果您还希望datagrid知道要添加和删除的项目,那么您将需要使用ObservableCollection而不是List或至少使用实现INotifyCollectionChanged的集合。