c# - 动态数据显示 : Change X-Axis date time format for graph

标签 c# wpf dynamic-data-display

我正在开发我正在使用的 wpf 应用程序 Dynamic Data Display显示图表。它工作正常。

问题:

请检查这个:

enter image description here

如何使用 12 小时制而不是 24 小时制?请提出建议。

更新:

这是我的图表 XAML:

 <d3:ChartPlotter Name="plotter" Margin="3,121,5,0" Grid.RowSpan="2" Height="373" VerticalAlignment="Top" VerticalContentAlignment="Stretch" LegendVisible="False">
    <d3:ChartPlotter.HorizontalAxis>
        <d3:HorizontalDateTimeAxis Name="dateAxis" />                                    
    </d3:ChartPlotter.HorizontalAxis>                                                               
    <d3:VerticalAxisTitle FontFamily="Georgia" Content="Sensor Readings" />
    <d3:HorizontalAxisTitle FontFamily="Georgia" Content="Date" />
</d3:ChartPlotter>

CS:

var dates = (from dr in datDs.Tables[0].AsEnumerable()
                 select new
                 {
                     date = dr.Field<DateTime>("DateRecorded")
                 }.date).ToList();

var datesDataSource = new EnumerableDataSource<DateTime>(dates);
datesDataSource.SetXMapping(x => dateAxis.ConvertToDouble(x));

最佳答案

要更改日期时间轴应用格式的方式,您必须查看 D3 的源代码。在文件中... DynamicDataDisplay/Charts/Axes/DateTime/DateTimeLabelProviderBase.cs

您必须更改 GetDateFormat 方法。这是将产生您想要的结果的示例:

protected virtual string GetDateFormat(DifferenceIn diff)
    {
        string format = null;

        switch (diff)
        {
            case DifferenceIn.Year:
                format = "yyyy";
                break;
            case DifferenceIn.Month:
                format = "MMM";
                break;
            case DifferenceIn.Day:
                format = "%d";
                break;
            case DifferenceIn.Hour:
                format = "hh:mm";
                break;
            case DifferenceIn.Minute:
                format = "%m";
                break;
            case DifferenceIn.Second:
                format = "ss";
                break;
            case DifferenceIn.Millisecond:
                format = "fff";
                break;
            default:
                break;
        }

        return format;
    }

关键是将小时的大小写从大写 H(24 小时制)更改为小写 h(12 小时制)。希望这对您有所帮助,并祝您在其余的图表项目中好运!

关于c# - 动态数据显示 : Change X-Axis date time format for graph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048533/

相关文章:

c# - 使用 SqlCommand.ExecuteNonQuery,如何获得超过 int 限制的受影响行数?

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException 未处理

C#动态数据展示-更新折线图

css - ASP.NET 设计 View - 移动控件

c# - 骰子程序计算不正确?

c# - 在属性中执行 while 循环会导致堆栈

c# 如何扩展 ListView 中的项目以占据多行?

c# - Wpf 绑定(bind) Observablecollection 和 RelayCommand

c# - 有条件的 foreach 循环