我正在尝试生成一个带有多个系列的花键图表,每个系列都有许多点。我在Excel中做了一些看起来像这样的事情
除了我之外会有更多像七个椭圆。
我已选择使用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'
我宁愿不必制作七个不同的属性,每个级别设置一个。首先我觉得这是蛮力,我也有一个内循环填充每个级别的点,并写出整个循环将是可怕的。
感谢您的帮助。
答案 0 :(得分:1)
您可以通过几种方式来获得所需的结果。我从Chart继承并通过添加几个依赖属性创建了一个MultiChart。一个用于我的项目源,一个用于模板。在属性更改了源的回调中,您将通过SeriesSource为每个点的子集合添加模板实例。
以下是使用附加属性实现此目的的SilverLight版本的链接。如果它甚至需要任何更改,将它转换为WPF应该相当简单。