3

動的データ表示を使用してグラフを表示しているwpfアプリケーションに取り組んでいます。正常に動作します。

問題 :

これを確認してください:

ここに画像の説明を入力してください

24時間ではなく12時間の時間形式を使用するにはどうすればよいですか?提案してください。

アップデート :

これはグラフ用の私の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));
4

3 に答える 3

1

DateTime 軸がフォーマットを適用する方法を変更するには、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 時間制) に変更することです。これがお役に立てば幸いです。チャート作成プロジェクトの残りの部分で頑張ってください!

于 2012-11-09T15:25:33.690 に答える
0

ここでは、使用方法の良い例を見つけることができます:

http://msdn.microsoft.com/en-us/magazine/ff714591.aspx

そして、これがあなたを助けることができると思います:

x 軸では、ConvertToDouble メソッドを使用して、DateTime データを double 型に明示的に変換しています。y 軸では、入力 int y を出力 double y に暗黙的に変換するために、単に y => y (「y は y に進む」と読みます) と書きました。SetYMapping(y => Convert.ToDouble(y) と書くことで、型マッピングを明示することもできました。ラムダ式のパラメーターとして x と y を選択したのは任意でした。つまり、任意のパラメーター名を使用できました。

そしてコード:

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

動的データ表示は、アプリケーション カルチャで DateTime を使用します。したがって、(で述べたようにweston) で cultere に設定する必要があり12 hour time formatます。この記事では、その方法について説明します。

WPF アプリケーションでカルチャをグローバルに設定するにはどうすればよいですか?

コード:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
于 2012-06-15T11:13:25.217 に答える
-1

これを試してください:(c#、DevExpress)

((XYDiagram)chartControl.Diagram).AxisX.DateTimeOptions.Format = DateTimeFormat.Custom;
((XYDiagram)chartControl.Diagram).AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd";
于 2012-10-31T09:27:23.993 に答える