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

C# Discussion :

[VSTO] databinding sur un RibbonControl [FAQ]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut [VSTO] databinding sur un RibbonControl
    Bonjour,

    est-il possible de binder un control de RibbonControl ? Je ne vois pas de propriété databindings...

    mathmax

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Il me semble que non, ce n'est pas possible.

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Dommage...

    Je me suis fait une classe wrapper pour combler ce manque :

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
        public abstract class RibbonControlWrapper
        {
            protected RibbonControl _Control;
     
            public RibbonControlWrapper(RibbonControl control)
            {
                _Control = control;
            }
     
            protected void DataBind(string propertyName, object dataSource, string dataMember, string eventName)
            {
                var sourceProperty = dataSource.GetType().GetProperty(dataMember);
                var controlProperty = _Control.GetType().GetProperty(propertyName);
     
                _Control.GetType().GetEvent(eventName).AddEventHandler(_Control,
                    new EventHandler<RibbonControlEventArgs>((s, e) =>
                    {
                        sourceProperty.SetValue(dataSource, Convert.ChangeType(controlProperty.GetValue(_Control, null), sourceProperty.PropertyType), null);
                    }));
     
                System.Action updateControl = () =>
                {
                    controlProperty.SetValue(_Control, Convert.ChangeType(sourceProperty.GetValue(dataSource, null), controlProperty.PropertyType), null);
                };
     
                if (dataSource is INotifyPropertyChanged)
                    ((INotifyPropertyChanged)dataSource).PropertyChanged += new PropertyChangedEventHandler((s, e) =>
                    {
                        updateControl();
                    });
                updateControl();
            }
        }
     
        public class RibbonEditBoxWrapper : RibbonControlWrapper
        {
            public RibbonEditBoxWrapper(RibbonEditBox control) : base(control) { }
     
            public void DataBind(object dataSource, string dataMember)
            {
                DataBind("Text", dataSource, dataMember, "TextChanged");
            }
        }

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pas mal !

    A mettre dans la FAQ ca



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

Discussions similaires

  1. Databinding sur une liste Enum
    Par Seth77 dans le forum C#
    Réponses: 4
    Dernier message: 07/09/2007, 12h07
  2. [C# CF2.0]Databinding sur premier Event
    Par pdesoil dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 20/07/2007, 09h42
  3. databinding sur combobox
    Par Mathieu.Nanoux dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/06/2007, 17h57
  4. [c# CF2.0 VS pro] databinding sur des controles differents
    Par pdesoil dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/05/2007, 13h41
  5. databinding sur contrôle invisible
    Par xawax34 dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/03/2007, 14h39

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