2010-10-13 60 views
1

我想在我的數據網格中使用3個字符的月份縮寫來格式化一個名爲'Month'的列,該數據網格綁定到一個條形圖。我的網格和圖表基於此演示示例:http://demos.telerik.com/silverlight/#Chart/Aggregates。基本上,網格按年份,季度,月份以及其他一些類別編譯數據並進行彙總。對於Month列,我嘗試了兩種不同的方法(爲了排序目的,我必須使用整數或月份的某個日期值)。首先,我只是將Month設置爲一個整數字段,然後使用映射到xaml中的'Month'字段的轉換器來顯示'JAN','FEB'等等。這對網格很有效,但圖表會顯示1, 2等,而不是月份縮寫。我研究了這一點,但無法想出將轉換器映射到圖表的解決方案。因此,我嘗試將月份字段設置爲日期時間,然後將值設置爲1/1/1900,2/1/1900等,並在網格的xaml中將字段的格式指定爲'MMM'。然後我用下面的語句來設置格式在圖表中,當用戶按月份劃分:在Silverlight中格式化Telerik圖表和圖例標籤

SalesAnalysisChart.DefaultView.ChartArea.AxisX.DefaultLabelFormat = "MMM"; 

當幾個月橫渡他們適當的標籤x軸顯示這部分在工作,但不當它們出現在圖例中時(當然,用戶可以按任何可能包括或不包括月份的列進行分組)。我試過設置LegendItemLabelFormat,ItemLabelFormat等,但沒有成功。我不確定要設置屬性的元素。我只需要更改「月份」列的默認格式 - 所有其他列在分組時應正常顯示。我也遇到了一個名爲'LegendItemFormatConverter'的類,它看起來很有前景,但我找不到任何有關如何實現它的例子。我實際上更喜歡轉換器方法,因爲我寫的轉換器在所有大寫顯示月份縮寫,而'MMM'格式顯示爲大寫/小寫。下面是我最初用於電網的轉換代碼:

using System; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using System.Windows.Data; 

namespace ApolloSL 
{ 
    public class MonthConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter,  System.Globalization.CultureInfo culture) 
     { 
      if (value != null) 
      { 
       DateTime date = new DateTime(1900, (Int32)value, 1); 
       return date.ToString("MMM").ToUpper(); 
      } 
      else 
      { return ""; } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return value.ToString(); 
     } 
    } 
} 

請幫助...

預先感謝您的幫助,

布萊恩

回答