WPF工具包折线图的性能

时间:2013-05-23 19:44:09

标签: c# wpf performance charts wpftoolkit

我刚刚使用绑定到List<KeyValuePair<int, float>>的WPF Toolkit创建了一个简单的图表。列表中有大约16,000个点。绘图控制需要非常长的时间(我已经停止等待一分钟了。)

以下是代码:

<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编写了一个简单的图表,并且它正在立即绘制所有这些内容。请原谅我的无知,因为我对这些主题一无所知,但导致这种表现差异的原因是什么?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

如果我没有弄错,这是由LineSeries的默认样式引起的,其中所有单个点都绘制为实心圆圈。这是非常耗时的,并且当您拥有所面对的分数时也不是特别实用。

我之前通过代码隐藏在我自己的代码中解决了这个问题,方法是将TemplateProperty的{​​{1}}更改为DataPointStyle,然后通过指定一些来定义线条颜色{ {1}} null SolidColorBrush

不幸的是,我没有相应的XAML解决方案。 (我甚至不确定它是否可以在XAML中轻松完成?)。

以下是我的代码隐藏的示例代码段。我希望它能给你一个正确的方向:

BackgroundProperty