在LineSeries图表中交换x和y轴(DataVisualization.Charting)

时间:2014-01-10 01:44:42

标签: .net silverlight wpftoolkit datavisualization.toolkit

我想使y轴成为独立轴,即将线序列的水平渲染转换为垂直线。这是我开始使用的代码:

<Window x:Class="Wpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
        Title="MainWindow" Height="350" Width="525">
  <Grid>
    <charting:Chart>
      <charting:Chart.Axes>
        <charting:LinearAxis Orientation="X" ShowGridLines="True" Name="xAxis" />
        <charting:LinearAxis Orientation="Y" ShowGridLines="True" Name="yAxis" />
      </charting:Chart.Axes>

      <charting:LineSeries
          Name="lineSeries"
          ItemsSource="{Binding}"
          IndependentValuePath="Indep"
          DependentValuePath="Dep">
      </charting:LineSeries>
    </charting:Chart>
  </Grid>
</Window>

首先我尝试添加

<charting:LineSeries.IndependentAxis>
    <charting:LinearAxis Orientation="Y" />
</charting:LineSeries.IndependentAxis>

<charting:LineSeries.DependentRangeAxis>
    <charting:LinearAxis Orientation="X" />
</charting:LineSeries.DependentRangeAxis>

这会导致System.InvalidOperationException显示消息

  

不能使用指定的独立轴。这可能是由于轴的未设置Orientation属性造成的。

但是,在上面的代码段中交换"X""Y"的值时,没有例外,一切正常,当然除了轴没有按我想要的方向定向。

我尝试的下一件事是以编程方式进行:

lineSeries.IndependentAxis = yAxis;
lineSeries.DependentRangeAxis = xAxis;

给了我同样的例外。同样,在上述语句中交换xAxisyAxis时,也不例外。

知道如何得到我想要的东西吗?

1 个答案:

答案 0 :(得分:0)

在轴交换前没有取得任何进展,我尝试了通用WPF旋转控件的方式。它就像在<charting:Chart>元素下添加以下内容一样简单并且有效:

<charting:Chart.LayoutTransform>
  <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90"/>
</charting:Chart.LayoutTransform>

除非你真的只想交换相关/独立轴,RotateTransform类似于大锤。因为那时你必须调整轴的位置并将它们旋转-90度。然而,这一切都是可行的,缺乏一个更直接的解决方案我决定采用这个。