【问题标题】:How do I bind to a list of lists to get multiple series of points with the WPF Toolkit?如何使用 WPF 工具包绑定到列表列表以获取多个点系列?
【发布时间】:2014-08-22 19:20:55
【问题描述】:

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

除了我将有更多类似的七个椭圆。

我选择使用 WPF Toolkit,因为它是免费的,我已经生成了所有的点,我把它们放在下面的结构中。

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 'List1') 来自“点”(类型“列表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'

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

感谢您的帮助。

【问题讨论】:

  • 能否请您发布您的 xaml 代码?和给定字典的代码隐藏/虚拟机?顺便说一句,您不能绑定到字典。
  • @Stian。进行了编辑以显示我现在的进度。
  • 你可以做你想做的事。我是通过从 Chart 继承并添加一个名为 SeriesSource 的依赖属性来完成的。我的属性更改方法然后加载设置模板并通过 SeriesSource 执行 foreach,为每个点子集合添加模板实例。这是使用附加属性实现此jmorrill.hjtcentral.com/Home/tabid/428/EntryId/351/… 的 SilverLight 版本的链接。如果有什么需要改变的话,将其转换为 WPF 应该不会太难。
  • @LeeO。谢谢,这帮助很大。把它准确地放在答案中,我会接受。

标签: c# wpf charts toolkit


【解决方案1】:

您有几个选项可以实现您想要的结果。我从 Chart 继承并通过添加几个依赖属性创建了一个 MultiChart。一个是我的项目来源,一个是要使用的模板。在源的属性更改回调中,您可以通过 SeriesSource 为每个点的子集合添加模板实例。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多