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 :

Assigner des valeurs à des Propriétés "Dynamiquement"


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut Assigner des valeurs à des Propriétés "Dynamiquement"
    Bonjour,

    j'aimerai savoir si il était possible, à l'aide d'une méthode spécial, d'assigner une valeur à une propriété d'un Control de manière dynamique.

    Voici par exemple ce que je voudrais faire:

    (ce code ne fonctionne pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
            {
                String PropertyName = ((Control)sender).Name.Substring(3); // le nom du Slider est le nom de la propriété préfixé de Sld
    
                ((Control)MonControl).SetValue(PropertyName, e.NewValue);
            }
    Maintenant, le problème est que SetValue demande un type DependencyProperty ou DependencyPropertyKey.

    Auriez vous une solution?

    merci

  2. #2
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    en utilisant la reflexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    using System.Reflection;
     
    ...
    //Ce code change la propriété Text d'un Button
     
    PropertyInfo propertyInfo = button1.GetType().GetProperty("Text");
    propertyInfo.SetValue(button1, "nouveau texte", null);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    c'est parfait

    merci, j'était parti sur ça aussi, mais j'avais pas la syntax correct, merci, ça marche parfaitement.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Je reviens sur le tapis,

    ça fonctionne parfaitement, c'est parfait, j'ai même trouvé un complément avec InvokeMember, mais voilà, j'ai un petit problème avec les Propriétés de dépendances...

    Elles ne sont pas trouvé ça lève une exception de type MissingMethodException

    Auriez vous une idée?

    Voici du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Viewport3D1.Camera.GetType().InvokeMember("Position", BindingFlags.SetProperty, null, Viewport3D1.Camera, new Object[] { "0,1,-1" });
    Ici, Position qui est en réalité une dépendance de ProjectionCamera.

    Je vous remercie d'avance

  5. #5
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    mais si tu connais le type de l'objet, quelle est l'utilité de le reflection ??

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    à défaut, selon ton code, tu peux aussi faire plus simple s'il n'y a pas trop de types différents à gérer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Viewport3D vp = moncontrol1 as Viewport3D;
    if(vp != null)
    {
       // utiliser vp comme un ViewPort3D
    }

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Non, en réalité je ne le connais pas, là c'est des testes de cas.

    Le truc c'est que j'ai un sorte de Panel avec des contrôles qui peuvent être ajouté à la volé mais nommé de manière à refléter ce qu'ils doivent contrôler.

    Exemple tout bête, je créer un Slider sHeight, je vire le s j'ai plus que Height, maintenant je sais qu'en déplaçant le curseur du Slider sHeight, je modifie la hauteur d'un Control (un Control qui est lui aussi crée à la volé).

    Je vous remercie, là, j'ai trouvé une soluce, mais temporaire, car des cas à gérer, j'en aurai beaucoup...

    merci pour votre aide

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Bonjour,

    Il est vrai que si la reflection permet d'obtenir les propriétés de l'objet, ce n'est pas le cas des DependencyProperty.
    'ai trouvé cet article qui devrait te permettre de trouver la DependencyProperty qui t'interesse.
    http://social.msdn.microsoft.com/for...-3e3ba118c89c/

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Par défaut
    Thanks you!!!

    je vais pouvoir faire du totalement générique

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2011, 04h07
  2. Réponses: 2
    Dernier message: 25/02/2009, 17h04
  3. Réponses: 5
    Dernier message: 15/06/2007, 12h58

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