(обновление) ICustomTypeDescriptor работает для моего приложения Windows Forms, но не для Silverlight; Не поддерживается. Я буду продолжать исследовать эту идею, хотя и посмотрю, куда я доберусь.
(/ Обновление)
У меня есть, скажем, несколько панелей переключателей (для тех, кто любит аналогии).
Каждая из этих панелей переключателей имеет переключатели, у которых Имя (строка) может быть в состоянии (bool), Вкл или Выкл.
Коммутационная панель и коммутаторы являются объектами с интерфейсом INotify.
Используя имена переключателей, я создаю список всех возможных имен переключателей в коллекции и создаю динамический класс, который имеет все эти имена в качестве свойств.
SwitchPanel1 (Switches( Switch1 ("Main",On) , Switch2("Slave",Off)))
SwitchPanel2 (Switches( Switch1 ("Bilge",On) , Switch2("Main",Off)))
Производит коллекцию
(Main,Bilge,Slave)
И создается динамический класс со свойствами:
SwitchPanel : (SwitchPanel)
Main : (Switch)
Bilge : (Switch)
Slave: (Switch)
Идея состоит в том, что если на панели переключателей есть переключатель с именем свойства, он помещается в это свойство. Таким образом, используя немного linq
propeties["Main"].SetValue(newSwitchType,SwitchPanel.Switches.FirstOrDefault(sw => sw.Name == "Main"));
Я хочу преобразовать этот новый динамический класс в INotfyPropertyChanged И отловить фактические изменения этих новых свойств, поэтому, если состояние переключателя изменяется, динамический объект сообщит об этом.
Почему? Он должен отображаться в виде списка, а используемый у меня вид списка имеет привязку, предоставляя имя свойства, а не путь привязки.
Он также пытается перехватить события INotify, приводя объект к INotifyPropertyChanged. Это означает, что он будет сортировать и / или группировать, когда все изменится.
Если вы знаете лучший способ сделать это, дайте мне знать. Пожалуйста.