【问题标题】:c# Live Charts how to use Formatterc# Live Charts如何使用Formatter
【发布时间】:2017-05-15 11:47:00
【问题描述】:

我有点 c# n00b 和完整的实时图表 n00b。我正在尝试创建一个跨越数天的简单图表。图表显示数据,但 X 轴上的日期标签格式不正确。我相信这是因为我使用 Live Charts Formatter 的方式。

主窗口中的 XAML

<lvc:CartesianChart x:Name="RankGraph" Series="{Binding Series}">
<lvc:CartesianChart.AxisX>
<lvc:Axis LabelFormatter="{Binding Formatter}"></lvc:Axis>
</lvc:CartesianChart.AxisX>
</lvc:CartesianChart>

创建图表的函数。

MainWindow _MainWindow = (MainWindow)Application.Current.MainWindow;

//Days
var dayConfig = Mappers.Xy<DateModel>().X(dateModel => dateModel.DateTime.Ticks / TimeSpan.FromDays(1).Ticks).Y(dateModel => dateModel.Value);

Func<double, string> Formatter = value => new DateTime((long)(value * TimeSpan.FromDays(1).Ticks)).ToString("d");

_MainWindow.Formatter = value => new DateTime((long)(value * TimeSpan.FromDays(1).Ticks)).ToString("d");

SeriesCollection Series = new SeriesCollection(dayConfig)
{
    new LineSeries
    {
        Values = new ChartValues<DateModel>
        {
            new Wpf.CartesianChart.Using_DateTime.DateModel
            {
                DateTime    = System.DateTime.Now,
                Value       = 5
            },
            new Wpf.CartesianChart.Using_DateTime.DateModel
            {
                DateTime    = System.DateTime.Now.AddDays(1),
                Value       = 9
            },
            new Wpf.CartesianChart.Using_DateTime.DateModel
            {
                DateTime    = System.DateTime.Now.AddDays(2),
                Value       = 4
            }
        },

        Fill = Brushes.Transparent
    },

};

Application.Current.Dispatcher.Invoke((Action)delegate
{
    if (_MainWindow.ct.IsCancellationRequested) return;

    _MainWindow.RankGraph.Series = Series;

});

我还在 mainwindow.cs 中设置了 Formatter

public Func<double, string> Formatter   { get; set; }           = value => new DateTime((long)(value * TimeSpan.FromDays(1).Ticks)).ToString("d");

我几乎在任何地方都尝试过声明 Formatter,但在使用它时它看起来不像 XAML。上面的代码生成了下面的图表。

从简单方法创建图形时,我如何正确使用 Formatter 选项,而不是像所有示例所示的那样在 UserControl 类包装器中创建图形。

【问题讨论】:

  • 到目前为止有什么解决办法吗?
  • 在我的实例中是因为我没有将数据内容设置为此。它的例子。你遇到了什么问题?

标签: c# charts data-visualization livecharts


【解决方案1】:

由于某种原因,XAML 中的绑定有时不起作用。 您需要在 XAML 中命名您的 LiveCharts 控件(任何名称):

<lvc:CartesianChart x:Name="RankGraph" Series="{Binding Series}">
<lvc:Axis x:Name="RankGraphAxisX" LabelFormatter="{Binding Formatter}"></lvc:Axis>

然后在后面的代码中绑定 Series 和 LabelFormatter:

RankGraph.Series = Series;
RankGraphAxisX.LabelFormatter = Formatter;

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2015-02-01
    • 1970-01-01
    • 2023-03-11
    • 2020-10-15
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多