WPF:以编程方式将DataGrid绑定到集合

时间:2014-03-13 22:14:49

标签: wpf binding datagrid user-controls itemssource

我已经花了好几个小时,类似的主题没有帮助。 :(

我有一个“Chart”类型的对象,其中包含一个List“LineItems”。 我想以编程方式将LineItems绑定到UserControl中的DataGrid。

Usercontrol XAML:

<DataGrid Name="myData" AutoGenerateColumns="True">

后面的Usercontrol代码:

    public void SetItemSource(ChartingBase.Chart chart)
    {
        //DataGrid.ItemsSource = chart.LineItems; // working!

        // this is not working:
        this.DataContext = chart;
        Binding b = new Binding( "LineItems" );
        b.Mode = BindingMode.TwoWay;
        b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
        myData.SetBinding( DataGrid.ItemsSourceProperty, b );
    }

只设置ItemsSource有效。手动创建绑定不起作用,我不知道我还能尝试什么。谢谢!

2 个答案:

答案 0 :(得分:0)

在WPF中,习惯上将数据放入ObservableCollection<T>集合,并将数据绑定到DataGrid.ItemsSource属性。然后,您可以在代码中填充或操作集合,UI将自动更新。试试这个:

<DataGrid Name="myData" ItemsSource="{Binding Items}" AutoGenerateColumns="True">

...

public void SetItemSource(ChartingBase.Chart chart)
{
    this.DataContext = chart;
    Items = new ObservableCollection<YourDataType>();
    foreach (SomeDataType dataType in chart.SomeCollection)
    {
        Items.Add(new YourDataType(dataType.SomeProperty, ...));
    }
}

答案 1 :(得分:0)

尝试

BindingOperations.SetBinding(myData, DataGrid.ItemsSourceProperty, new Binding("LineItems") { Source = chart });