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