使用具有绑定属性的线性或对数轴绘制Telerik RadCartesianChart

时间:2018-06-12 14:21:05

标签: c# wpf telerik

我想:

  • Telerik RadCartesianChart图表显示X轴,左侧是Y轴,右侧是次级Y轴,用于显示其他数据。
  • 我的数据使用模型中的集合绑定
  • 可以在左和/或右Y轴上切换线性轴或对数轴。

目前,我的图表是使用以下

在XAML中实现的
    <UserControl>
    <UserControl.Resources>
        <telerik:LinearAxis  x:Key="Y1LinearAxis" />
        <telerik:LogarithmicAxis  x:Key="Y1LogarithmicAxis" />
        <telerik:LinearAxis HorizontalLocation="Right" x:Key="Y2LinearAxis" />
        <telerik:LogarithmicAxis HorizontalLocation="Right" x:Key="Y2LogarithmicAxis" />
    </UserControl.Resources>
<telerik:RadCartesianChart>
    <telerik:RadCartesianChart.HorizontalAxis>
        <telerik:LinearAxis x:Name="XAxis" />
    </telerik:RadCartesianChart.HorizontalAxis>
    <telerik:RadCartesianChart.VerticalAxis>
        <Binding Path="IsY1AxisLinear" Converter="{local:BoolToTelerikAxisConverter AxisWhenTrue={StaticResource Y1LinearAxis}, AxisWhenFalse={StaticResource Y1LogarithmicAxis}}" />
    </telerik:RadCartesianChart.VerticalAxis>
    <telerik:RadCartesianChart.SeriesProvider>
        <telerik:ChartSeriesProvider x:Name="chartSeriesProvider" Source="{Binding GraphLines}">
            <telerik:ChartSeriesProvider.SeriesDescriptors>
                <telerik:ScatterSeriesDescriptor ItemsSourcePath="Data"
                                                 XValuePath="X1"
                                                 YValuePath="Y1">
                </telerik:ScatterSeriesDescriptor>
                <telerik:ScatterSeriesDescriptor ItemsSourcePath="Data"
                                                 XValuePath="X2"
                                                 YValuePath="Y2">
                    <telerik:ScatterSeriesDescriptor.Style>
                        <Style TargetType="telerik:ScatterLineSeries" BasedOn="{StaticResource ScatterLineSeriesStyle}">
                            <Setter Property="VerticalAxis"
                                Value="{Binding IsY2AxisLinear, Converter={local:BoolToTelerikAxisConverter AxisWhenTrue={StaticResource Y2LinearAxis}, AxisWhenFalse={StaticResource Y2LogarithmicAxis}}}" />
                        </Style>
                    </telerik:ScatterSeriesDescriptor.Style>
                </telerik:ScatterSeriesDescriptor>
            </telerik:ChartSeriesProvider.SeriesDescriptors>
        </telerik:ChartSeriesProvider>
    </telerik:RadCartesianChart.SeriesProvider>
</telerik:RadCartesianChart>
</UserControl>

我有一个转换器,它从布尔值(IsY1AxisLinearIsY2AxisLinear)转换为定义为静态资源的telerik轴。

目前,第一个Y轴(左侧)在更改IsY1AxisLinear值时正常工作,但第二个Y轴(右侧)未显示任何数据。当轴直接在样式中实现时,它确实显示数据,如

<Setter Property="VerticalAxis">
    <Setter.Value><telerik:LinearAxis /></Setter.Value>
</Setter>

或甚至直接链接到静态资源

<Setter Property="VerticalAxis">
    <Setter.Value><StaticResource ResourceKey="Y2LinearAxis" /></Setter.Value>
</Setter>

我也尝试过使用其他不同的方法,比如在后面的代码中直接实现轴(即使这个解决方案不符合我想要的目标),但是没有成功。

任何人都知道如何在第二轴上切换lin / log轴?

0 个答案:

没有答案