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

Windows Presentation Foundation Discussion :

[MVVM] Binding à un ViewModel depuis le code-behind


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Par défaut [MVVM] Binding à un ViewModel depuis le code-behind
    Bonjour tout le monde,

    Ma question peut paraitre relativement bizarre puisque un des intérêts de MVVM et de "supprimer" le code-behind des différentes vues... mais dans mon cas je ne vois pas d'autre solution.

    En faite je souhaite utilisé le Ruban Office 2007 pour mon interface graphique. Sur un des onglet de celui-ci, je souhaite personnalisé les boutons qui y seront présents suivant des configurations que mon application charge depuis un fichier XML (le but est de pouvoir ajouter ou supprimer des boutons du menu dans le futur sans pour autant mettre à jour l'application, le fichier xml de configuration sera mis à jour par l'application elle même suivant le contenu de différents fichiers que l'utilisateur chargera dans l'application). Seulement il n'est pas possible de faire de binding sur la propriété "Controls" qui est la liste des contrôles contenues dans mon RibbonGroup. Premièrement, Controls n'est pas une DependencyProperty, deuxièmement, Controls n'est accessible qu'à travers un getter et ne dispose pas de setter.
    Donc au revoir mas belle idée de faire un menu dynamique avec le ruban Office 2007.

    Je suis donc en train de me rabattre vers un menu standard mais sans perdre espoir de trouver un ruban type Office qui me convienne.
    Dans cette optique, je vais mettre à disposition les éléments servant à composer mon menu dynamique dans mon ViewModel. J'utiliserais ensuite un Converter pour créer mes MenuItem à partir de ces éléments.

    Seulement au cours de ma réflexion, je me suis demandé comment il était possible de faire un binding depuis le code-behind de ma View sur une ObservableCollection exposée par mon ViewModel. Car dans le cas où la propriété Controls de mon fameux ruban Office aurait disposée d'un setter, j'aurais pu alors réalisé une moulinette dans mon code-behind pour peupler mon ruban depuis les données de mon ViewModel...

    Désolé pour les explications un peu longues, mais si quelqu'un peu au passage me trouver une solution de dernière minute pour mon problème de ruban, je suis preneur ^^

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203
    Par défaut
    J'ai pas regardé en détail mais peut être que le lien suivant peut t'aider

    http://blog.lexique-du-net.com/index...-Office-Ribbon

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Par défaut
    Merci pour le lien, mais je l'avais déjà vu ...

    En faite ce post permet de résoudre le problème de la commande attaché au bouton. Hors dans mon cas, c'est le bouton tout entier que je veux être capable de générer suivant mon ViewModel (voir même les boutons... suivant le contenu de mon ViewModel).

  4. #4
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Je te réponds ici plutôt que sur mon blog, cela permettra d'aider plus de monde je pense !

    J'ai cette problématique en ce moment, j'intègre le Ribbon de chez infragistics dans une architecture CAB (en faisant une UIExtensionSite pour les connaisseurs) ... par contre, je ne sais pas pour le ribbon "officiel".

    Je vais me pencher sur la question demain... Le plus simple serait peut-être de créer un control dérivant du Ribbon en ajoutant la fonctionnalité voulue ... ?

  5. #5
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    J'ai bien réussi à synchroniser les items du ribbonGroup avec une collection du ViewModel. Pour cela j'utilise un objet intermédiaire.

    Par contre j'ai un problème : L'ajout fonctionne parfaitement jusqu'à ce que le groupe soit affiché pour la première fois. Ensuite plus aucune mise à jour de l'interface, la collection Controls est bien mise à jour ...

    J'ai essayé de faire des updateLayoyt et cie mais rien ne met à jour la vue ...

    Quelqu'un saurait comment faire ?

  6. #6
    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
    Pourquoi ne pas passer par une propriété attachée au contrôle Ruban, bindée sur le contenu du fichier XML récupéré depuis le ViewModel ?

    Dans le code de la prop attachée, on récupère le ruban, on récupère la propriété Controls et on ajoute autant de contrôles que l'on veut...

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

Discussions similaires

  1. Creer un fichier .resx depuis le code Behind
    Par Shargat dans le forum ASP.NET
    Réponses: 6
    Dernier message: 25/05/2011, 12h50
  2. Alimenter une balise META depuis le code Behind
    Par p_mehdi dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/10/2009, 09h15
  3. Depuis le code behind modifier le texte dans un tag
    Par gabdeschenes dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/06/2009, 20h49
  4. Appel d'un webservice depuis le code behind
    Par mappy dans le forum Services Web
    Réponses: 4
    Dernier message: 01/07/2008, 14h54
  5. Ajout de code html depuis le code behind
    Par Apo94 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 06/05/2008, 08h38

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