我有以下集合,它作为图表的一组LineSeries ItemsSources的全局存储。
public ObservableCollection<ObservableCollection<Data>> AllDataSeries;
上述收藏可能会不时发生变化,当它重置时我会清除所有系列中的图表 - 当它再次重新填充时,我会在图表中添加尽可能多的系列AllDataSeries.Count
告诉我到。
此时我需要设置绑定。
for(int i = 0; i < AllDataSeries.Count; i++)
{
var series = new LineSeries { IndependentValuePath = "X", DependentValuePath = "Y", Title = "SomeSeriesTitle" };
Binding binding = new Binding("#?????#");
binding.Mode = BindingMode.TwoWay;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
series.SetBinding(ListView.ItemsSourceProperty, binding);
MyChart.Series.Add(series);
}
问题是,我不知道如何编写绑定路径。我试过了:
String.Format("AllDataSeries[{0}]", i)
但它不起作用。
如何在绑定上设置Path属性?
答案 0 :(得分:1)
AllDataSeries实际上是一个字段而不是属性吗?我不认为PropertyPath会遵循公共领域。不建议公开公共字段,因此您可能只需将其更改为:
public ObservableCollection<ObservableCollection<Data>> AllDataSeries
{
get;
private set;
}
但是要回答关于绑定语法的问题,我相信你的PropertyPath语法是正确的。虽然我对这样的嵌套ObservableCollection感到紧张。就个人而言,我会完全放弃绑定并执行类似的操作:
series.ItemsSource = AllDataSeries[i];
看起来AllDataSeries集合的更改似乎不会触发新系列的添加。
您还记得设置图表的DataContext吗? (可选)您可以设置Binding的Source属性。
binding.Source = this;
最后,您应该将BindingMode更改为OneWay并删除UpdateSourceTrigger。图表是一个只读控件,因此没有理由在那里进行双向绑定。
希望这有帮助。