2009-05-06 8 views
1

データバインディングを使用してSilverlightツールキットチャートにデータをバインドしようとしています。 私は一連のシリーズをたくさん持っていますので、手前にいくつのシリーズが必要かを判断することはできません。 また、データバインディングモデルに固執し、このデータソースに他の多くのコントロールをバインドするときに、これらのシリーズをプログラムで追加することに頼らないでください。複数のシリーズをSilverilghtツールキットにデータバインドする方法

私はこの非常に問題の解決策を示したJeremiah Morrillのウェブ上の記事を見つけました。

Jeremiah's solution

アプリケーションが実行されていた、これは反映していないだろうが、私は私のデータバインディングのデータソースの値を更新しようとするまでさて、これは、最初は完全に働きました。 PropertyChangedイベントにサブスクライブされていないかのように グラフの隣のデータグリッドに同じデータをバインドしても、データバインディングのデータソース値が変更されるたびに、期待通りにデータグリッドが反応します。私のアプリケーションの起動時にエレミヤの溶液からの私のChartHelperで

は、私は

public static readonly DependencyProperty SeriesSourceProperty = 
     DependencyProperty.RegisterAttached("SeriesSource", 
              typeof(IEnumerable), 
              typeof(ChartHelper), 
              new PropertyMetadata(SeriesSourceChanged)); 

SeriesSourceChangedイベントが呼び出されると、次の依存関係プロパティを持っています。 しかし、私のDataBindingのデータソース値が変更されたとき、これは再び呼び出されません。

次のような質問は以下のとおりです。

  • どのように私は、このソリューションでのPropertyChanged通知をキャプチャすることができますか?
  • 上記のDependencyPropertyに追加できるものはありますか?
  • これを達成するためにチャートやシリーズに追加する必要があるのでしょうか?

私は数日間、この上で私の脳をラッキングされているので、任意のヘルプや提案は非常に

感謝を理解されるであろう!

+0

:次に、あなたはこのような何かを – WebDude

答えて

0

私は、この問題に対する解決策を見つけるなかったとvisifire

からチャートコントロールを使用して終了私はカスタマイズすることがはるかに簡単にこれを見つけたが、決してこれを達成するためにデータバインディングを使用してのきちんとした方法を見つけないとなってしまったんよりプログラム的なアプローチ。

1

SeriesSource型は、IEnumerableではなくObservableCollectionである必要があります。私は問題 http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=2973を概説し、試料溶液とのCodePlex問題追跡を掲載している

private static void SeriesSourceChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) 
{ 
    var sender = o as YourType; 
    var newCollection = e.NewValue as ObservableCollection<DataSetViewModel>; 
    if (newCollection != null) 
    { 
     newCollection.CollectionChanged += new NotifyCollectionChangedEventHandler(sender.OnCollectionChanged); 
    } 
} 

private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
} 
関連する問題