0

我正在尝试在 C# WPF 应用程序中创建折线图。我已经广泛搜索了我的问题的答案。我知道这是一个远射,但我很绝望。SQL查询如下:

SELECT stock_symbol, stock_date, stock_price_adj_close 
FROM MoneyBMine.dbo.NYSE 
WHERE stock_symbol IN ('AA', 'AIT') 
AND stock_date BETWEEN '2000-01-03' AND '2000-02-04'

或者:

SELECT stock_symbol, stock_date, stock_price_adj_close 
FROM MoneyBMine.dbo.NYSE 
WHERE stock_symbol = 'AA' 
AND stock_date BETWEEN '2000-01-03' AND '2000-02-04'

我只是想让我的任何值显示在我的应用程序内的图表上。我也尝试过 ReportViewer 并在“Microsoft SQL Server Report Builder”中制作报告,但再次尝试将这些报告带入我的 C# WPF 应用程序中没有任何效果。所以我要问的是一种在 C# WPF 应用程序中在某种图表/报告上可视化 SQL 数据的方法。

4

1 回答 1

0

我正在使用 OxyPlot,你可以在这里得到它......它比 WPF 自己的解决方案更好、更容易使用(他们提供的图表 dll 没有文档)。

拥有它后,您可以在代码中执行以下操作:

// Create plot
var plot_model = new PlotModel()  { Title = title};

// Create points
var points = from_a_method_linq_Sql_whatever();
var line_series = new LineSeries();

// Add plot to serie
foreach (var point in points)
    line_series.Points.Add(point);

// Add them to the plot
plot_model.Series.Add(line_series);

我会将这个图作为一个属性,然后像这样简单地从 XAML 绑定到它:

<oxy:Plot Model="{Binding OutputChart}" />

(确保你有这个在你的 xaml 之上:

 xmlns:oxy="clr-namespace:OxyPlot.Wpf;assembly=OxyPlot.Wpf"

您还可以将您的点作为属性公开,并通过 xaml 上的绑定完成所有操作。你的选择。

添加轴和图例很简单,只需快速查看他们的文档/论坛。

编辑:
我在我写的应用程序中使用了这样的东西:

// Running on a collection of objects that have dates and levels, and other things
foreach (var obj in lvl_reps)
{
    points.Add(new ExercisePoint
    {
        DateTime = exercise.Date,
        Lvl = obj.Level,
        X = DateTimeAxis.ToDouble(exercise.Date.AddHours(-12)),
        Y = obj.Reps.Sum(),
        Exercise = exercise.Exercise
    });
}

不要让ExercisePoint 吓到你,下面是它的实现:

/// <summary>
/// Extends the normal point used by OxyPlot to include the level and the date.
/// The Idea is to use them on the tool tip of the exercise
/// </summary>
class ExercisePoint : IDataPoint
{
    public double X { get; set; }
    public double Y { get; set; }
    public int Lvl { get; set; }
    public DateTime DateTime { get; set; }
    public string Exercise { get; set; }
}

例如,这就是您可以将自定义字段绑定到点的方式。

于 2013-10-23T12:42:12.100 回答