2

にバインドする WPF Toolkit を使用して単純なグラフを作成しましたList<KeyValuePair<int, float>>。リストには約16,000ポイントがあります。チャート コントロールがそれを描画するのに信じられないほど長い時間がかかります (1 分後に待つのをやめました)。

コードは次のとおりです。

<chartingToolkit:Chart DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=MyData}">
    <chartingToolkit:LineSeries DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}"/>
</chartingToolkit:Chart>

このチャーティング コントロールのパフォーマンスは正常ですか、それとも何か問題がありますか? もしそうなら、どうすればパフォーマンスを改善できますか?

Windows フォームを使用するだけで簡単なグラフを書いた人を知っていますが、BufferedGraphicsこれらすべてを即座に描画していました。私はこれらの主題について何も知らないので、私の無知を許してください。しかし、このパフォーマンスの違いの原因は何ですか?

4

2 に答える 2

4

Anders Gustafsson の回答を拡張するには、次のように XAML でこれを行うことができます。

 <chart:LineSeries ItemsSource="{Binding}" DependentValueBinding="{Binding Path=x}" IndependentValueBinding="{Binding Path=y}">
  <chart:LineSeries.DataPointStyle>
    <Style TargetType="chart:LineDataPoint">
       <Setter Property="Template" Value="{x:Null}" />
    </Style>
  </chart:LineSeries.DataPointStyle>
</chart:LineSeries>
于 2016-02-29T02:11:52.657 に答える
3

私が間違っていなければ、これは のデフォルト スタイルが原因でLineSeries、すべての個々の点が塗りつぶされた円として描画されます。これは信じられないほど時間がかかり、直面しているポイントの数がある場合は特に実用的ではありません.

の を に変更し、TemplatePropertyの にいくつかを割り当てて線の色を定義することで、少し前に自分のコードで分離コードを使用してこれを解決しました。DataPointStylenullSolidColorBrushBackgroundPropertyDataPointStyle

残念ながら、対応する XAML ソリューションはありません。( XAMLで簡単に実行できるかどうかさえわかりません)。

これは、コード ビハインドのスニペットの例です。それがあなたを正しい方向に押し上げることを願っています:

var viewSeries = new LineSeries
{
    DataPointStyle = new Style
    {
        TargetType = typeof(DataPoint),
        Setters = { new Setter(TemplateProperty, null) }
    }
};
viewSeries.DataPointStyle.Setters.Add(
    new Setter(BackgroundProperty, new SolidColorBrush(Colors.Red)));
于 2013-05-23T20:51:32.313 に答える