在Silverlight中格式化Telerik图表和图例标签

时间:2010-10-13 15:35:31

标签: silverlight telerik charts

我正在尝试使用数据网格中绑定到条形图的3个字符的月缩写格式化一个名为'Month'的列。我的网格和图表基于此演示示例:http://demos.telerik.com/silverlight/#Chart/Aggregates。基本上,网格编译数据并按年份,季度,月份和其他一些类别进行汇总。对于Month列,我尝试了两种不同的方法(出于排序目的,我必须使用整数或一些日期值)。首先,我只是将Month作为一个整数字段,然后使用映射在xaml中的转换器为'Month'字段显示'JAN','FEB'等。这对于网格工作正常,但图表将显示1, 2,而不是月份缩写。我研究了这个并且无法想出将转换器映射到图表的解决方案。因此,我尝试将Month字段设置为日期时间,然后将值设置为1/1 / 1900,2 / 1/1900等,并将字段的格式指定为网格的xaml中的“MMM”。然后,当用户按月分组时,我使用以下语句设置图表中的格式:

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

这部分起作用,当跨越x轴显示月份时,它们被正确标记,但不是当它们出现在图例中时(当然,用户可以按任何列分组,可能会也可能不会包括月)。我已经尝试过设置LegendItemLabelFormat,ItemLabelFormat等,但没有成功。我不确定要设置属性的元素。我只需要更改Month列的默认格式 - 所有其他列在分组时应该正常显示。我还遇到了一个名为'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(); 
        } 
    } 
} 

请帮忙......

预先感谢您的协助,

布赖恩

1 个答案:

答案 0 :(得分:0)

Telerik forums中有答案。