2012-06-15 184 views
3

我正在使用wpf應用程序,我使用Dynamic Data Display來顯示Graph。它工作正常。動態數據顯示:更改圖形的X軸日期時間格式

問題:

請檢查:

enter image description here

我如何可以連續使用12小時時間格式,而不是24個小時?請建議。

UPDATE:

這是我對圖形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)); 

回答

0

在這裏你可以找到一個很好的例子,對用量:

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

我認爲這可以幫助你:

在x軸上,我用ConvertToDouble方法 DateTime數據明確地轉換爲double類型。在y軸上,我只是寫了y => y (讀作「y去y」)隱式地將輸入int y轉換爲輸出double y的 。我可以通過 編寫SetYMapping(y => Convert.ToDouble(y))來明確我的類型映射。我爲lambda表達式的參數選擇x和y 是任意的 - 我可以用 使用任何參數名稱。

和代碼:。

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

動態數據顯示使用日期時間與您的應用程序的文化所以(由weston提到的),你必須將其與12 hour time format設置爲cultere本文介紹瞭如何做到這一點:

How can i globally set the Culture in a WPF Application?

代碼:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
+0

我也在使用相同的代碼 – Sunny

+0

用cs代碼檢查更新 – Sunny

-1

試試這個:(C#的DevExpress)

((XYDiagram)chartControl.Diagram).AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; 
((XYDiagram)chartControl.Diagram).AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd"; 
+1

問題關於D3 ChartPlotter,而不是DevExpress.ChartControl – BerndK

1

要更改日期時間軸適用的格式的話,你就必須去進入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小時時間)。希望這會有所幫助,並祝你的圖表項目的其餘部分順利!

相關問題