WPF DataGrid双向源绑定到List <dataclass>以编程方式</dataclass>

时间:2012-03-21 19:08:06

标签: c# wpf binding datagrid runtime

我需要在运行时进行绑定,因为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;
    }
}

2 个答案:

答案 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的集合。