2009-11-19 2 views
1

Je suis un débutant à Silverlight et j'ai de la difficulté à trouver une solution à un problème. J'ai une dataagrid silverlight avec 3 colonnes.Silverlight Datagrid Databinding

L'une des colonnes est liée à un entier. Je veux être capable de lier ma colonne à une fonction qui traduirait mon entier dans son code d'état. La fonction accepte un nombre entier, et en utilisant une instruction switch, je retourne une chaîne de ce que ce nombre représente.

0 = inactif 1 =
actif
2 = En attente
etc

Beaucoup de ce que j'ai trouvé a été techniques pour l'élément de fixation, qui est très cool, mais pas ce que je suis à la recherche de.

Répondre

1

Vous pouvez créer un IValueConverter qui vous permet d'appeler une fonction sur la valeur de la base de données.
Vous pouvez personnaliser la méthode Convert pour renvoyer une chaîne en fonction de la valeur passée:

Convertir objet public (valeur d'objet, type targetType, paramètre d'objet, culture CultureInfo) {
commutateur ((int) valeur)
{
cas 0: retour "Inactif";
cas 1: retour "Actif";
cas 2: retour "En attente";
}
}

IValueConverter on MSDN
IValueConverter example in Silverlight

0

En fonction de votre architecture je soit

  1. Mettre en œuvre un IValueConverter comme Phani suggère
  2. Utilisez le Model-View-ViewModel (MVVM). Dans ce modèle, tout ce qui est nécessaire pour la liaison sera représenté en tant que propriété d'addition dans votre modèle de vue.

de sorte que vous auriez quelque chose comme le

public class ViewModel:INoftifyPropertyChanged 
{ 
    private Model _model; 

    public string StatusCodeName 
    { 
     get 
     { 
      string statusCodeName = SomeCodeToGetStatusCodeNameFromStatus(_model.Status); 
      return statusCodeName; 
     } 
    } 
} 

suivant Vous pouvez ensuite lier à cette propriété

{Binding StatusCodeName}