2

我刚刚使用 WPF Toolkit 创建了一个简单的图表,该图表绑定到List<KeyValuePair<int, float>>. 列表中大约有 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>

这个图表控件的性能是正常的还是我做错了什么?如果是这样,我该如何提高性能?

我知道有人写了一个简单的图表,只BufferedGraphics在 Windows 窗体中使用,它可以立即绘制所有这些东西。请原谅我的无知,因为我对这些主题一无所知,但是导致这种性能差异的原因是什么?

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为,然后通过将一些分配给的 来定义DataPointStyle线条颜色。nullSolidColorBrushBackgroundPropertyDataPointStyle

不幸的是,我没有相应的 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 回答