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 ^^
Partager