我已经花了好几个小时,类似的主题没有帮助。 :(
我有一个“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有效。手动创建绑定不起作用,我不知道我还能尝试什么。谢谢!
答案 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 });