MVVM для страницы Silverlight с динамическими элементами управления вводом - PullRequest
1 голос
/ 12 января 2011

Скажем, у вас есть страница xaml, которая принимает два ввода, таких как DATE и некоторое значение TEXT, и отображает результат в DataGrid, легко иметь класс с тремя свойствами dataTypes DateTime, string и некоторыми Collection и реализовывать то же в МВВМ.

У меня есть страница xaml с DataGrid и несколько элементов управления вводом (например, текстовое поле или указатель даты), генерируемых динамически на основе определенных критериев. Я хочу реализовать это в шаблоне MVVM, но не знаю, как это сделать. Любые указатели будут полезны.

Ответы [ 2 ]

0 голосов
/ 12 января 2011

всегда хорошо для разделения вида и модели; однако это не всегда можно сделать с помощью простого связывания данных простых типов.

Я бы посмотрел на что-то вроде пользовательского элемента управления, который может привязывать данные к списку пар {имя, значение, спецификация}, когда «спецификация» - это логический тип элемента управления, который нужно использовать.

Думая об этом; это похоже на то, что делает сетка свойств, если вы передаете ей пользовательскую коллекцию дескрипторов свойств….

У Devexpess есть «вертикальная сетка», которая может помочь, также посмотрите на сторонние сетки свойств.

0 голосов
/ 12 января 2011

По моему опыту, MVVM не подходит для всех сценариев презентации, иногда вам просто нужно использовать codebehind или создать собственный элемент управления.Я бы предложил здесь создать пользовательский элемент управления, который принимает (связывает со свойством зависимости) объект или список объектов и генерирует элементы управления (текстовые поля с проверкой / проверкой ввода, для целых чисел, значений типа double, средства выбора даты и т. Д.) И привязывает к ним данный объект,В конце у вас будет один интеллектуальный элемент управления, который берет объект и визуализирует поля ввода и привязывает их.Ваш виртуальный класс просто выставит объект или список объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...