4

私の WPF アプリケーションには、4 つの LineGraphs をプロットできる D3 ChartPlotter があります。これは XAML コードです。

<d3:ChartPlotter Name="plotter">
    <d3:ChartPlotter.HorizontalAxis>
        <d3:HorizontalAxis Name="timeAxis" />
    </d3:ChartPlotter.HorizontalAxis>
    <d3:ChartPlotter.VerticalAxis>
        <d3:VerticalAxis Name="accelerationAxis" />
    </d3:ChartPlotter.VerticalAxis>
</d3:ChartPlotter>

whered3は DinamicDataDisplay の名前空間で、これはコード ビハインド (の関連部分) です。

var x = new List<int>();
var y = new List<int>();
for (var t = 0; t <= 10; t = t + 1) { 
    x.Add(t);
    y.Add(Math.Pow(t,2));
}

var xCoord = new EnumerableDataSource<int>(x);
xCoord.SetXMapping(t => t);
var yCoord = new EnumerableDataSource<int>(y);
yCoord.SetYMapping(k => k);

CompositeDataSource plotterPoints = new CompositeDataSource(xCoord, yCoord);

plotter.AddLineGraph(plotterPoints, Brushes.Red.Color , 2, "MyPlot");

私が今やりたいことは、このプロットを削除し、別のポイント セットを使用して再描画することです。残念ながら、D3 の (貧弱な) ドキュメントと Web の両方で、その方向に進むものを見つけることができません。

何をすべきか、どこを見るべきかについて何か提案はありますか?

ありがとう!

4

3 に答える 3

2

これを行うために私が見つけた最良の方法は、コード ビハインドに DataSource を表すプロパティを設定し、チャートの DataSource をそのプロパティにバインドすることです。コード ビハインドで INotifyPropertyChanged を実装し、データ ソースを更新または再割り当てするたびに OnPropertyChanged を呼び出します。これにより、プロッターはバインドを監視し、グラフを再描画するようになります。

例:

EnumerableDataSource<Point> m_d3DataSource;
public EnumerableDataSource<Point> D3DataSource {
    get {
        return m_d3DataSource;
    }
    set {                
        //you can set your mapping inside the set block as well             
        m_d3DataSource = value;
        OnPropertyChanged("D3DataSource");
    }
}     

protected void OnPropertyChanged(PropertyChangedEventArgs e) {
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null) {
        handler(this, e);
    }
} 

protected void OnPropertyChanged(string propertyName) {
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
} 

さらに詳しい情報が必要な場合は、D3 が配置されている CodePlex のディスカッション ( ディスカッション) を参照してください。

于 2012-10-31T19:04:08.273 に答える