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;
    }
}

WPF DataGrid双向源绑定到List<;数据类>;程序化

为了正确绑定,类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的集合。