如何使用WPF Toolkit绑定到列表列表以获得多个点系列?

时间:2014-08-22 19:20:56

标签: c# wpf charts toolkit

我正在尝试生成一个带有多个系列的花键图表,每个系列都有许多点。我在Excel中做了一些看起来像这样的事情

Excel version of chart

除了我之外会有更多像七个椭圆。

我已选择使用WPF工具包,因为它是免费的,我已经生成了所有要点,我已将它们放在以下结构中。

List<List<KeyValuePair<double, double>>>

外部列表是系列列表,内部列表是该系列中的点列表。

我没有看到要绑定的项目源以生成系列列表,我将如何绑定到此?

修改

我已经放弃了我想要做的事情,我曾希望动态绑定到列表列表,用户可以在其中定义任何他们想要的渐变曲线,每个曲线都有一组点。

现在我所做的是制作一组特定的曲线(大约7个)并用所有点填充它们,让用户从定义的列表中选择。

这是我为此写的XAML,

<chartingToolkit:Chart Title="Compressor Map">
                <chartingToolkit:LineSeries  DependentValuePath="Value"
                                             IndependentValuePath="Key"
                                             ItemsSource="{Binding Path=Points[0]}"
                                             IsSelectionEnabled="True" />

                <chartingToolkit:LineSeries  DependentValuePath="Value"
                                             IndependentValuePath="Key"
                                             ItemsSource="{Binding Path=Points[1]}"
                                             IsSelectionEnabled="True" />
            </chartingToolkit:Chart>

我计划根据一组选项切换可见性。但这不起作用,它会出现以下错误,

System.Windows.Data Error: 17 : Cannot get 'Item[]' value (type 'List 1&#39;)来自&#39;点&#39; (键入&#39;列出1'). BindingExpression:Path=Points[0]; DataItem='ChartViewModel' (HashCode=4925117); target element is 'LineSeries' (Name=''); target property is 'ItemsSource' (type 'IEnumerable') ArgumentOutOfRangeException:'System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index'

我宁愿不必制作七个不同的属性,每个级别设置一个。首先我觉得这是蛮力,我也有一个内循环填充每个级别的点,并写出整个循环将是可怕的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以通过几种方式来获得所需的结果。我从Chart继承并通过添加几个依赖属性创建了一个MultiChart。一个用于我的项目源,一个用于模板。在属性更改了源的回调中,您将通过SeriesSource为每个点的子集合添加模板实例。

以下是使用附加属性实现此目的的SilverLight版本的链接。如果它甚至需要任何更改,将它转换为WPF应该相当简单。

http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/351/Silverlight-Charts-Binding-multiple-Series.aspx