代码问题中的WPF数据绑定

时间:2010-02-15 23:25:12

标签: c# wpf data-binding wpftoolkit

我有以下集合,它作为图表的一组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属性?

1 个答案:

答案 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。图表是一个只读控件,因此没有理由在那里进行双向绑定。

希望这有帮助。