WPF DataGrid双向源绑定到List<;数据类>;程序化
本文关键字:lt 数据 程序化 gt List DataGrid 绑定 WPF | 更新日期: 2023-09-27 18:28:29
我需要在运行时进行绑定,因为DataGrid将绑定到不同的数据源和/或类对象。我有两个班CA和CB。在CB中,有一种设置绑定的方法。但下面的简单方法只设置单向绑定。如何进行双向绑定?例如,当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;
}
}
为了正确绑定,类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,因为它具有开箱即用的INotifyPropertyChanged,并通知数据绑定控件元素的添加、删除和更改。
您的类"CA"需要实现INotifyPropertyChanged,才能在数据网格中反映对CA对象的更改。
如果您还希望数据网格知道正在添加和删除的项,那么您将需要使用ObservableCollection而不是List,或者至少使用一个实现INotifyCollectionChanged的集合。