Silverlight 4 + Prism создает элементы управления во время выполнения - PullRequest
0 голосов
/ 19 февраля 2011

Я создаю приложение Silverlight 4 для управления объектами активных каталогов (пользователи CRUD, группы и т. Д.). Теперь мы все знаем, что объекты активных каталогов обладают множеством свойств. Я хочу сохранить некоторые группы имен свойств в БД SQL (например, samaccountname, mail и т. Д.) Для определенных типов объектов AD (пользователей, групп и т. Д.). Когда пользователь в приложении Silverlight нажимает кнопку «создать пользователя», я хочу

  1. получить все имена свойств, которые я определил в sql db для пользователя
  2. создать предварительно определенный элемент управления silverlight для каждого свойства и добавить его к текущему «представлению создания»
  3. сможет прочитать все значения, которые пользователь вводит в элементы управления, и передать их на

Пользовательские элементы управления различаются в зависимости от типа свойства Active Directory, то есть для свойства со значением datetime мы создадим пользовательский элемент управления с календарем. Таким образом, мы можем сохранить динамические «Создание» просмотров.

Фонд Silverlight / Prism уже существует, и я добавляю свои виды через RegionManager. Все это работает просто отлично, но я не уверен, как добавить элементы управления таким динамическим образом, чтобы он все еще работал с PRISM и шаблоном MVVM. Спасибо за любой вклад.

1 Ответ

0 голосов
/ 20 февраля 2011

Я собираюсь предположить, что вам удобно получать свойства из БД и сохранять значения обратно и сосредоточиться на средней области создания представления с учетом MVVM.

PRISM часть Iне беспокоиться оВы говорите, что зарегистрировали представления у менеджера региона, и это все, что вам нужно сделать.

Сначала я подумал, как бы вы «создали» элементы управления во время выполнения с учетом MVVM.Создание элементов управления - это не сложная часть, но потребуется ручка для элемента, в который вы будете их внедрять, например, корневая сетка.На первый взгляд, это будет очень неприлично для MVVM.Лично я считаю правильным, чтобы код «просмотра» был выполнен по старинке, это код «данных», используемый в привязке, который должен быть MVVM.Проблема заключается в том, чтобы сообщить коду, который будет вводить элементы управления в представление того, что в действительности вводить.Я не могу придумать изящный способ сделать это.

В качестве решения вы не могли бы создать представление, содержащее все элементы управления, которые применяются к каждому из свойств, а не "создавать" их при необходимости "скрытьим когда не нужно?Вы можете связать свойство «Видимость» (возможно, через конвертер значений) со свойством в ViewModel, которое можно использовать для определения, должен ли отображаться этот конкретный элемент управления или нет.Если их поместить в панель стека, то представление будет динамически уменьшаться.

Если вы считаете, что пример кода поможет, дайте мне знать.

...