Форматирование Telerik Chart и меток легенды в Silverlight - PullRequest
1 голос
/ 13 октября 2010

Я пытаюсь отформатировать столбец с именем «Месяц», используя трехзначное сокращение месяца в моей сетке данных, которая связана с гистограммой. Моя сетка и диаграмма основаны на этом демонстрационном примере: http://demos.telerik.com/silverlight/#Chart/Aggregates. По сути, сетка собирает данные и суммирует их по годам, кварталам, месяцам, а затем и по некоторым другим категориям. Для столбца «Месяц» я пробовал два разных метода (для сортировки я должен использовать целое число или некоторое значение даты для месяца). Во-первых, я просто сделал Month целочисленным полем, а затем использовал преобразователь, сопоставленный в xaml для поля «Месяц», для отображения «JAN», «FEB» и т. Д. Это нормально работало для сетки, но на диаграмме отображалось 1, 2 и т. Д. Вместо сокращения месяца. Я исследовал это и не смог найти решение, чтобы сопоставить конвертер с диаграммой. Итак, я попытался сделать поле «Месяц» датой-временем, а затем установить значение на 01.01.1900, 01.02.1900 и т. Д. И указать формат поля «MMM» в xaml для сетки. Затем я использовал следующий оператор, чтобы установить формат на диаграмме, когда пользователь сгруппирован по месяцам:

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

Это частично работало в том, что когда месяцы отображались по оси X, они были помечены правильно, но не тогда, когда они появлялись в легенде (пользователь, конечно, может группировать по любому из столбцов, которые могут или не могут быть включите месяц). Я попытался установить LegendItemLabelFormat, ItemLabelFormat и т. Д., Но безуспешно. Я не уверен в элементе для установки свойства. Мне нужно только изменить формат по умолчанию только для столбца Месяц - все остальные столбцы должны отображаться нормально при группировании. Я также натолкнулся на класс под названием LegendItemFormatConverter, который выглядит многообещающе, но я не могу найти примеров того, как его реализовать. Я на самом деле предпочел бы метод конвертера, потому что конвертер, который я написал, отображает аббревиатуру месяца во всех заглавных буквах, тогда как формат «МММ» отображается в верхнем / нижнем регистре. Вот код конвертера, который я изначально использовал для сетки:

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

1 Ответ

0 голосов
/ 14 октября 2010

На форумах Telerik есть ответ .

...