将集合绑定到 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 部分 <chartingToolkit:Chart.Axes>...</chartingToolkit:Chart.Axes>
时,数据将出现,但不是我喜欢的格式。
为什么图表不呈现我的集合数据?
【问题讨论】:
***.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"
确保
IndependentValuePath
和DependentValuePath
的属性拼写正确。
我发现这些是图表体验中最大的问题,因此这是调试问题时要遵循的清单。希望这将回答许多一般性问题。如果它不足以作为答案,您应该自己回答 OP。
【讨论】:
以上是关于将集合绑定到 WPF 工具包图表的主要内容,如果未能解决你的问题,请参考以下文章
为啥 WPF 对图表的支持少得多,并且使用 Silverlight 工具包是唯一的选择?