c#实时图表如何使用格式化程序

c#实时图表如何使用格式化程序,c#,charts,data-visualization,livecharts,C#,Charts,Data Visualization,Livecharts,我是一个有点c#n00b和一个完整的现场图表n00b。我正在尝试创建一个简单的图表,它跨越若干天。图形显示数据,但日期标签在X轴上的格式不正确。我相信这是因为我如何使用实时图表格式化程序 主窗口中的XAML <lvc:CartesianChart x:Name="RankGraph" Series="{Binding Series}"> <lvc:CartesianChart.AxisX> <lvc:Axis LabelFormatter="{Binding For

我是一个有点c#n00b和一个完整的现场图表n00b。我正在尝试创建一个简单的图表,它跨越若干天。图形显示数据,但日期标签在X轴上的格式不正确。我相信这是因为我如何使用实时图表格式化程序

主窗口中的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\u MainWindow=(MainWindow)Application.Current.MainWindow;
//日子
var dayConfig=Mappers.Xy().X(dateModel=>dateModel.DateTime.Ticks/TimeSpan.FromDays(1.Ticks).Y(dateModel=>dateModel.Value);
Func Formatter=value=>newdatetime((long)(value*TimeSpan.FromDays(1.Ticks)).ToString(“d”);
_MainWindow.Formatter=value=>newdatetime((long)(value*TimeSpan.FromDays(1.Ticks)).ToString(“d”);
SeriesCollection Series=新的SeriesCollection(dayConfig)
{
新系列
{
值=新值
{
新的Wpf.CartesianChart.Using_DateTime.DateModel
{
DateTime=System.DateTime.Now,
值=5
},
新的Wpf.CartesianChart.Using_DateTime.DateModel
{
DateTime=System.DateTime.Now.AddDays(1),
值=9
},
新的Wpf.CartesianChart.Using_DateTime.DateModel
{
DateTime=System.DateTime.Now.AddDays(2),
值=4
}
},
填充=画笔。透明
},
};
Application.Current.Dispatcher.Invoke((操作)委托
{
如果(_MainWindow.ct.iscancellationrequest)返回;
_MainWindow.RankGraph.Series=系列;
});
我还在mainwindow.cs中设置格式化程序

public Func<double, string> Formatter   { get; set; }           = value => new DateTime((long)(value * TimeSpan.FromDays(1).Ticks)).ToString("d");
public Func格式化程序{get;set;}=value=>new DateTime((long)(value*TimeSpan.FromDays(1.Ticks)).ToString(“d”);
我几乎在任何地方都尝试过声明格式化程序,但在使用它时它看起来不像XAML。上面的代码生成下面的图形


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

由于某些原因,XAML中的绑定有时不起作用。 您需要以XAML命名LiveCharts控件(对任何内容):


到目前为止有什么解决方案吗?在我的例子中,这是因为我没有将数据内容设置为这个值。这取决于例子。你有什么问题?
<lvc:CartesianChart x:Name="RankGraph" Series="{Binding Series}">
<lvc:Axis x:Name="RankGraphAxisX" LabelFormatter="{Binding Formatter}"></lvc:Axis>
RankGraph.Series = Series;
RankGraphAxisX.LabelFormatter = Formatter;