2010-10-13 4 views
1

J'essaye de formater une colonne appelée 'Mois' en utilisant l'abréviation de mois à 3 caractères dans ma grille de données qui est liée à un graphique à barres. Ma grille et graphique sont basés sur cet exemple de démonstration: http://demos.telerik.com/silverlight/#Chart/Aggregates. Fondamentalement, la grille compile les données et les résume par année, trimestre, mois, puis d'autres catégories. Pour la colonne Mois, j'ai essayé deux méthodes différentes (à des fins de tri, je dois utiliser un entier ou une valeur de date pour le mois). Tout d'abord, je viens de faire de Month un champ entier puis j'ai utilisé un convertisseur mappé dans le xaml pour que le champ 'Month' affiche 'JAN', 'FEB', etc. Cela a bien fonctionné pour la grille, mais le graphique afficherait 1, 2, etc. au lieu de l'abréviation du mois. J'ai fait des recherches sur ce sujet et je n'ai pas réussi à trouver une solution pour mapper le convertisseur au tableau. J'ai donc essayé de faire du champ Month un datetime, puis j'ai défini la valeur sur 1/1/1900, 2/1/1900, etc. et spécifié le format du champ à 'MMM' dans le xaml de la grille. J'ai ensuite utilisé l'instruction suivante pour définir le format dans le tableau lorsque l'utilisateur groupé par mois:Mise en forme d'étiquettes Telerik et de légendes dans Silverlight

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

Cette partie a travaillé en ce que lorsque les mois ont été affichées sur l'axe x, ils ont été étiquetés correctement, mais pas quand ils sont apparus dans la légende (l'utilisateur, bien sûr, peut grouper par n'importe laquelle des colonnes qui peut inclure ou non le mois). J'ai essayé de définir LegendItemLabelFormat, ItemLabelFormat, etc. mais sans succès. Je ne suis pas sûr de l'élément sur lequel mettre la propriété. J'ai seulement besoin de changer le format par défaut pour la colonne Mois - toutes les autres colonnes devraient s'afficher normalement lorsqu'elles sont groupées. Je suis également tombé sur une classe appelée "LegendItemFormatConverter" qui semble prometteuse mais je ne trouve aucun exemple sur la façon de l'implémenter. Je préférerais la méthode du convertisseur car le convertisseur que j'ai écrit affiche l'abréviation du mois en majuscules, tandis que le format «MMM» s'affiche en majuscules/minuscules. Voici le code de conversion que j'ai utilisé à l'origine pour la grille:

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(); 
     } 
    } 
} 

S'il vous plaît aider ...

Merci d'avance pour votre aide,

Bryan

Répondre