1

在我的 WPF 应用程序中,我有一个以下查询将所选日期范围显示为“日期”,并将每天处理的服务器总数显示为“金额”。

  var query_1 = 

  (this.db.Servers
  .Where(a => (a.Date >= fromDP.SelectedDate.Value && a.Date <= toDP.SelectedDate.Value)
   && ((a.ServerID == "ServerID1" || a.ServerID == "ServerID2") && a.Type == "Complete"))
  .GroupBy(a => EntityFunctions.TruncateTime(a.Date))
  .OrderBy(a => a.Key)
  .Select(g => new { Date = g.Key, Amount = g.Count() }))
  .ToList();

它在绑定到 ListBox 的 ItemsSource 时返回如下输出(只是为了检查查询是否正常工作)

结果

现在如何将此结果、日期金额绑定到 WPF 图表 X 和 Y 轴。(X 轴表示日期,Y 轴表示金额)。

图表可以是气泡系列/线系列或柱系列。

4

2 回答 2

1

这篇博文可能有你需要的东西。

http://www.itdevspace.com/2010/09/wpf-toolkit-datagrid-chart-example.html

基本上,您将从 LINQ 查询中检索到的信息放入一个集合中,就像您拥有的列表一样(上面博客文章中的示例使用 ObservableCollection 可能用于通知目的),然后将 Chart ItemSource 属性放入 Collection,将 IndependentValue 放入日期和金额的 DependentValue。

<charting:LineSeries
    ItemsSource="{Binding Path=Data}"
    IndependentValueBinding="{Binding Date}"
    DependentValueBinding="{Binding Amount}"/>

我没有在匿名类型上尝试过这个,所以你可能需要改变你的查询逻辑以更明确。上面的 xaml 代码期望 DataContext 有一个名为 Data 的 Collection,其中包含具有属性 Date 和 Amount 的 Items。

于 2013-05-06T14:47:28.490 回答
0

我在 msdn 论坛中找到了解决方案。对于那些想在未来参考解决方案的人。

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/2c4fc325-83c1-4b07-b77a-bc7070c558f3/?prof=required

希望这可以帮助。

于 2013-05-07T08:53:05.253 回答