Silverlight Toolkit LineSeries随机连接数据点

时间:2012-10-08 13:43:21

标签: silverlight random toolkit lineseries

我正在尝试渲染折线图,但LineSeries每次重绘图形时都会随机连接数据点。

我的项目源是我的自定义类的类型列表,它有2个属性,一个用于x轴,另一个用于y轴(两个都是'double'值)。这些属性的值不会更改并加载一次。

我的线条有几条笔直的垂直线条跳跃,即3点或4点的x轴值相同,但y值会发生变化。它将这些点与直线垂直连接起来。

但奇怪的是,它从左侧随机使用任何数据点,而另一个数据点用于连接到右侧。

我认为它使用的第一个点基于物品来源的顺序,从左边开始连接,最后一个点连接到右边。

项目来源始终采用相同的顺序,这也是我希望它们连接的顺序。

我尝试附加图片,但不允许......所以只能进行文字描述。

        LineSeries ser = new LineSeries();
        Chart.Series.Add(ser);
        ser.DependentValuePath = "YAxis";
        ser.IndependentValuePath = "XAxis"
        ser.ItemsSource = data.Coordinates;

有人知道为什么会这样吗?感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

我在创建条形图表时遇到了类似的问题。幸运的是,我的一位同事注意到Silverlight图表都是从左到右运行的 - 这会影响它如何绘制所提供的不同图表。

简单地旋转图表似乎是最好的想法 - 但它仍然有一些图表问题(我的传奇也被轮换)。

我不是一个C#编码器,所以我用Chart的风格创建了一个控件模板。我进入模板并旋转图表的edgepanel。以下是一个非常简短而通用的例子:

<Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="charting:Chart">
         <Border Background="{TemplateBinding Background}" 
                 BorderBrush="{TemplateBinding BorderBrush}"
                 BorderThickness="{TemplateBinding BorderThickness}">
              <Grid>

我没有在这里放置所有代码,但可以在http://silverlight.codeplex.com/SourceControl/changeset/view/80285#778932找到图表的完整模板

                   <chartingprimitives:EdgePanel x:Name="ChartArea" 
                                       Style="{TemplateBindingChartAreaStyle}"
                                       RenderTransformOrigin="0.5,0.5">
                        <chartingprimitives:EdgePanel.RenderTransform>
                            <CompositeTransform Rotation="90"/>
                        </chartingprimitives:EdgePanel.RenderTransform>        
                   </chartingprimitives:EdgePanel>
                     <Grid x:Name="PlotArea" Canvas.ZIndex="-1"
                           RenderTransformOrigin="0.5,0.5" />
                     <Border Canvas.ZIndex="10" BorderBrush="Gray" 
                             BorderThickness="1"/>
              </Grid>
          </Border>
      </ControlTemplate>
    </Setter.Value>
</Setter>

这样,图表的整个绘图区域都被翻转,允许图表向下绘图而不是强制数据向右绘图。 (我的线条没有正确绘制,并且在连接点的顺序上不稳定,我遇到了同样的问题)

它帮助我的图表(需要调整,但这给出了我能够弄清楚的一般概念)。希望它对你有所帮助。

答案 1 :(得分:0)

因为图表是基于独立值而不是基于依赖值的。我的&#34;条形图&#34;也有类似的问题。它是按照设计的。将您的图表视为横向翻转的x vs y图。现在你可以看到它是如何绘制的。根据y改变点的顺序并没有做任何事情。

我认为Telerik没有这个限制。