Это тот же вопрос, что и у одного , который я спрашивал ранее НО, что этот был по отношению к обычному C #.
Это Silverlight 2, и у меня нет ICustomTypeDescriptor
Итак, снова вопрос:
У меня есть, скажем, несколько панелей переключателей (для тех, кто любит аналогии).
Каждая из этих панелей переключателей имеет переключатели, у которых Имя (строка) может быть в состоянии (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. Это означает, что он будет сортировать и / или группировать, когда все изменится.