(mise à jour) ICustomTypeDescriptor fonctionne pour mon application Windows Forms, mais pas pour Silverlight; Non supporté. Je vais continuer à enquêter sur cette idée et voir où je vais. (/ mise à jour)C# INotifyPropertyChanged sur les propriétés d'un objet créé dynamiquement?
je, dire quelques panneaux de commutation (pour ceux qui aiment les analogies). Chacun de ces panneaux de commutation comporte des commutateurs dont le nom (chaîne) peut être dans l'état (bool) de On ou Off. Le panneau de commutation et les commutateurs sont des objets dotés de l'interface INotify.
À l'aide des commutateurs noms, je crée une liste de tous les noms de commutation possibles sur la collection et de créer une classe dynamique qui a tous ces noms comme des propriétés.
SwitchPanel1 (Switches(Switch1 ("Main",On) , Switch2("Slave",Off)))
SwitchPanel2 (Switches(Switch1 ("Bilge",On) , Switch2("Main",Off)))
Produit une collection de
(Main,Bilge,Slave)
Et une classe dynamique est produit qui a les propriétés:
SwitchPanel : (SwitchPanel)
Main : (Switch)
Bilge : (Switch)
Slave: (Switch)
L'idée est que si le panneau de commande comporte un interrupteur avec le nom de la propriété, il est placé sur cette propriété. Donc, en utilisant un peu de LINQ
propeties["Main"].SetValue(newSwitchType,SwitchPanel.Switches.FirstOrDefault(sw => sw.Name == "Main"));
Je veux lancer cette nouvelle classe dynamique INotfyPropertyChanged ET attraper les changements réels sur ces nouvelles propriétés, donc si un changement de commutation indiquent l'objet dynamique fera rapport.
Pourquoi? Il doit être affiché dans une vue de liste et la vue de liste que j'utilise a sa liaison en fournissant le nom de propriété, et non le chemin de liaison.
Il tente également d'attraper des événements iNotify en jetant l'objet contre INotifyPropertyChanged. Cela signifie qu'il va trier et/ou grouper quand les choses changent.
Si vous connaissez une meilleure façon de faire me le faire savoir. S'il vous plaît.
Comme vous le dites, non trivial, mais certainement plus facile que la génération d'une classe dynamique ... –
Cela pourrait être une façon intéressante de le faire, et il est certainement mon suscite la curiosité. est-ce que donner un aller et de faire rapport. – Dann
travaillé normalement, mais pas avec un autre projet parce que c'est dans Silverlight (comme cela ne prend pas en charge ICustomTypeDescriptor, grrr). célébrera comme la réponse, mais toutes les idées pour s Ilverlight serait bien aussi. – Dann