IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Silverlight databinding sur un membre Dictionary


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut Silverlight databinding sur un membre Dictionary
    Bonjour,

    J'ai actuellement dans mon application un DataGrid silverlight qui est lié (databinding) à une liste d'objets.
    Chacun de ces objets comporte un membre qui est de type dictionary et qui est donc rempli avec une série de clés et de valeurs.

    Chaque colonne du DataGrid est donc liée à chaque membre de l'objet. Mais les dernières colonnes doivent être liées à des éléments spécifiques du membre de type Dictionary.

    Donc, dans la syntaxe Xaml ou via le code, y-a-t-il une possibilité de spécifier que le binding d'une colonne en particulier doit être effectué sur base d'un champ précis mais également d'une clé contenue dans ce champ; ce champ étant de type Key,Value ?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par fterf Voir le message
    Donc, dans la syntaxe Xaml ou via le code, y-a-t-il une possibilité de spécifier que le binding d'une colonne en particulier doit être effectué sur base d'un champ précis mais également d'une clé contenue dans ce champ; ce champ étant de type Key,Value ?
    Ce sera plus simple dans le XAML je pense, avec l'aide d'un converter.
    Tu effectues la liaison de données sur le champ en question donc ton dictionnaire mais n'oublies pas de lui passer ton objet converter qui se chargera de récupérer la bonne valeur en fonction de la clef du tu mettras en dur dans son implémentation ou que tu passeras en paramètre à la propriété ConverterParameter (je préfère cette solution, ça te permet de rendre générique le converter).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    Bonjour,

    Merci pour cette réponse, c'est exactement ce que je cherchais. Voici le code de la classe faisant office de Converter :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class OneDictionaryConverter : IValueConverter
      {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
          var Dict = value as Dictionary<string, object>;
          if (Dict != null)
          {
            return Dict[parameter as string];
          }
          throw new NotImplementedException();
        }
     
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
          throw new NotImplementedException();
        }
      }

    Puis dans le Xaml, on déclare une ressource qui fait référence à cette classe:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Grid.Resources>
        <src:OneDictionaryConverter x:Name="MyDictionaryConverter"/>
      </Grid.Resources>

    Ensuite, toujours dans le Xaml, la colonne du DataGrid fait référence à cette ressource:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <sdk:DataGridTextColumn Header="Libellé" Width="*" Binding="{Binding Path=MyDictionaryField, Converter={StaticResource MyDictionaryConverter}, ConverterParameter=MyKey}" IsReadOnly="True" />

    Le MyKey est la clé de la valeur à aller rechercher dans le membre de type dictionnaire.

    Un grand merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. databinding sur contrôle invisible
    Par xawax34 dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/03/2007, 14h39
  2. [POO] Pointeur sur fonction membre et héritage
    Par MrDuChnok dans le forum C++
    Réponses: 9
    Dernier message: 20/07/2006, 17h19
  3. Pointeur sur fonction membre avec parametre
    Par Glosialabolas dans le forum C++
    Réponses: 7
    Dernier message: 06/02/2006, 02h32
  4. Réponses: 10
    Dernier message: 03/02/2005, 13h09
  5. Réponses: 5
    Dernier message: 12/01/2005, 20h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo