2010-02-15 106 views
1

我有以下集合,它充當圖表的一組LineSeries ItemsSources的全局存儲。WPF數據綁定代碼問題

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); 
} 

事情是,我沒有ide如何編寫綁定的路徑。我試過:

String.Format("AllDataSeries[{0}]", i) 

但它沒有工作。

我該如何在綁定上設置Path屬性?

回答

1

AllDataSeries實際上是一個字段而不是屬性?我不認爲PropertyPath會遵循公共領域。它不建議暴露公共領域反正所以你應該可能只是修改成:

public ObservableCollection<ObservableCollection<Data>> AllDataSeries 
{ 
    get; 
    private set; 
} 

但是,爲了回答你有關綁定語法問題,我相信你的PropertyPath語法是正確的。雖然我很擔心這樣的嵌套的ObservableCollection。就個人而言,我只想放棄裝訂乾脆做這樣的事情:

​​

它看起來並不像更改AllDataSeries集合會引發一系列新的反正被添加。

您是否記得設置圖表的DataContext?或者,您可以設置綁定的Source屬性。

binding.Source = this; 

最後,您應該將BindingMode更改爲OneWay並刪除UpdateSourceTrigger。圖表是一個只讀控件,所以沒有理由在這裏進行雙向綁定。

希望這會有所幫助。

+0

嘿,謝謝你的詳細回覆。 AllDataSeries是一個屬性(它已經過了午夜,我不再清楚了)。 我在series.SetBinding行中發現了一個錯誤,(它應該是LinearSeries.ItemsSource屬性,而不是ListView.ItemsSource)。 在SetBinding調用後ItemsSource爲null時,它仍然不起作用。有任何想法嗎? 我設置了圖表的DataContext。 – Maciek 2010-02-15 23:50:22

+0

您是否嘗試過明確設置綁定的來源?我期望DataContext能夠傳播到這個系列,但我對WPF工具箱中的圖表控件沒有任何經驗。 – Josh 2010-02-15 23:54:00

+0

我也應該重申,你的問題的第二段表明你在這裏設置綁定並沒有真正獲得任何東西。當然,我想知道爲什麼綁定不起作用,但最終我認爲在這種情況下設置ItemsSource = AllDataSeries [i]會更好。 – Josh 2010-02-15 23:57:19