将集合绑定到 WPF 工具包图表

Posted

技术标签:

【中文标题】将集合绑定到 WPF 工具包图表【英文标题】:Binding a collection to WPF Toolkit chart 【发布时间】:2012-02-28 02:39:08 【问题描述】:

这是我的目标:

使用 WPF 工具包,创建一个简单的柱形图,其中包含线性 Y 轴和日期时间范围 X 轴。 将对象集合绑定到图表。每个对象都有一个 DateTime(X 轴数据点)和 Int32(Y 轴数据点)属性。

以下是我当前的 XAML。下面的 XAML 有我想要的坐标轴,但是图表不会呈现任何数据:

 <chartingToolkit:Chart Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" Name="ColumnChart" Title="Records Loaded By Date" 
    VerticalAlignment="Top" Height="262">
            <chartingToolkit:Chart.Axes>
                <chartingToolkit:DateTimeAxis  Interval="1" IntervalType="Days"  x:Name="myDateTimeAxis"
                        Orientation="X" Title="Date">
                    <chartingToolkit:DateTimeAxis.AxisLabelStyle>
                        <Style TargetType="chartingToolkit:DateTimeAxisLabel">
                            <Setter Property="StringFormat" Value="0:MM/dd"/>
                        </Style>
                    </chartingToolkit:DateTimeAxis.AxisLabelStyle>
                </chartingToolkit:DateTimeAxis>
                <chartingToolkit:LinearAxis Orientation="Y" ShowGridLines="True" x:Name="myYAxis"
                            Title="Transactions Loaded"/>
            </chartingToolkit:Chart.Axes>
            <chartingToolkit:Chart.Series>
                <chartingToolkit:ColumnSeries DependentValuePath="TransactionLoadCount" 
        IndependentValuePath="Date" ItemsSource="Binding Path=LoadStats" 
        IsSelectionEnabled="True">
                </chartingToolkit:ColumnSeries>
            </chartingToolkit:Chart.Series>
        </chartingToolkit:Chart>

注意:当我删除 XML 部分 &lt;chartingToolkit:Chart.Axes&gt;...&lt;/chartingToolkit:Chart.Axes&gt; 时,数据将出现,但不是我喜欢的格式。

为什么图表不呈现我的集合数据?

【问题讨论】:

***.com/questions/4762455/… 该图表似乎仅在集合中有多个项目时才显示。我正在针对 1 个元素的集合进行测试。 我从未使用过 WPF 的图表控件,但我很可能最终会使用。请让我知道这个问题的进展情况。 @jberger - 我遇到的是工具包中的一个错误。错误是:如果我的集合中存在 1 个元素,则图表将不会呈现任何数据。当我的集合包含 > 1 个元素时,控件按预期呈现。所以我想解决方法是确保你的收藏有多个元素。祝你好运! 也许设置间隔/间隔类型可能会导致这种意外行为。无论哪种方式,您都应该为您的问题写一个答案,因此它被标记为已解决。 【参考方案1】:

既然您想通了并在 cmets 中发布了它,我将扩展其他内容以查找何时会出现此问题。 请读者注意,问题是绑定到控件的列表需要在集合中包含 > 1 DateTime 才能显示图表。这是 WPF Toolkit 库中的一个错误。这可能会在 WPF Toolkit 的当前/未来版本中得到修复。

如果这不能解决您的问题:

    在加载控件时观察输出窗口是否存在任何绑定表达式错误。如果图表的数据上下文设置正确,将项目源绑定到不可用的集合会导致问题。 确保要在 DateTime 轴上使用的 DateTime 值具有跨越至少 2 天的值,或者任何您设置的时间间隔。如果适用,请尝试设置最大值或最小值。 使用排除过程来确定是 X 轴还是 Y 轴导致了问题。注释掉 X 轴 XAML 并查看控件是否正确显示 Y 轴。如果是这样,注释掉 Y 轴并取消注释 X 轴 XAML 并查看它是否正确显示。如果不是,您知道您的问题出在某个轴上(未注释掉)。 检查您的 StringFormat 是否正确。在这里我相信你可以只使用`Value="MM/dd" 确保IndependentValuePathDependentValuePath 的属性拼写正确。

我发现这些是图表体验中最大的问题,因此这是调试问题时要遵循的清单。希望这将回答许多一般性问题。如果它不足以作为答案,您应该自己回答 OP。

【讨论】:

以上是关于将集合绑定到 WPF 工具包图表的主要内容,如果未能解决你的问题,请参考以下文章

WPF 工具包折线图的性能

慢速渲染WPF图表

WPF绑定到集合

为啥 WPF 对图表的支持少得多,并且使用 Silverlight 工具包是唯一的选择?

如何将通用项目添加到绑定到 WPF 中的集合的 ComboBox

如何将 TabControl 的项目绑定到 wpf 中的可观察集合?