2011-10-20 62 views
0

我創建了一個Chart控件,過了一段時間後,我決定向它添加多重功能。ObservableCollection作爲DependenceProperty和綁定問題

private static DependencyPropertyKey SeriesPropertyKey = DependencyProperty.RegisterReadOnly("Series", typeof(ObservableCollection<ChartSerie>), typeof(Chart), new FrameworkPropertyMetadata(new ObservableCollection<ChartSerie>())); 
public static DependencyProperty SeriesProperty = SeriesPropertyKey.DependencyProperty; 

我使用XAML調用它這樣該屬性:我使用ObservableCollection<ChartSerie>類型的像這樣的相依性實現的功能

<chart:Chart> 
     <chart:Chart.Series> 
      <chart:ChartSerie Data="{Binding ChartData1}"/> 
      <chart:ChartSerie Data="{Binding ChartData2}" /> 
     </chart:Chart.Series> 
    </chart:Chart> 

的ChartSerie代碼只是ChartData的容器:

public static DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(ObservableCollection<ChartPoint>), typeof(ChartSerie), new FrameworkPropertyMetadata(OnDataChanged)); 

我面臨的問題是,ChartSerie情況下不被填充了綁定數據的到來。他們的Data屬性始終設置爲null。我在visual studio的輸出沒有綁定錯誤。

在此先感謝。

編輯:挖了一下看起來像這裏有一個真正的綁定問題。看起來圖表的DataContext不被ChartSerie繼承。 ChartSerie是FrameworkElement的,以防萬一這個重要

回答

1

我記得,你需要定義自己的非泛型集合,而不是揭露通用ObservableCollection<Whatever>

public class ChartSeriesCollection : ObservableCollection<ChartSeries> 
{ 
} 

... 

public static readonly DependencyProperty ChartSeriesProperty = DependencyProperty.Register(
    "ChartSeries", 
    typeof(ChartSeriesCollection), 
    typeof(MyClass)); 

如果你不這樣做,事情確實非常奇怪。

+0

嗯......你有什麼暗示,爲什麼這種需要?無論如何,我會檢查。最初我將泛型集合公開爲圖表的單一依賴屬性(只是一個系列的數據,而不是系列列表)並且它正在工作。 –

+0

我替換了集合,現在我看到綁定問題,你能檢查我的編輯嗎?謝謝! –

+0

您應該在第一個問題中將我指向您的博客文章:)再次感謝Kent。 –