我想在我的數據網格中使用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();
}
}
}
請幫助...
預先感謝您的幫助,
布萊恩
今天早上我看到了 - 謝謝! – Bryan 2010-10-14 12:35:06