.NET4 WPF Datagrid - ответы на различные типы данных - PullRequest
0 голосов
/ 13 августа 2010

Я начинающий программист и занимаюсь этим больше как хобби, чем карьера.В связи с этим я составляю заявку на создание счетов для компании, в которой я работаю.У меня есть работники по выставлению счетов, которые принимают данные от наших поставщиков, сопоставляют клиентов, продукты и тарифы и т. Д., А также выставляют счета.Сейчас я пытаюсь украсить его и разрешить редактирование информации о клиенте и оценке.Частично это означает, что у меня есть несколько таблиц, которые содержат значения поиска, например, ставку НДС, наценку, пользовательские ставки.

Я пишу приложение в WPF, C #, .Net 4. Я также пытаюсь придерживаться шаблона MVVM для разделения слоев.

Я создал универсальный VeiwModelназывается EditLookupTableViewModel, который обрабатывает общение со слоем данных и все остальное.Моя проблема с видом.Я хотел бы создать единое представление, которое может обрабатывать все типы данных, которые я разрешаю в вышеупомянутом классе.Вот что я застрял:

Я хотел бы представить данные в виде списка текущих значений в таблице базы данных и позволить людям редактировать эти значения или добавлять новые значения.Различные типы данных основаны на таблицах в базе данных SQL, доступ к которым осуществляется через Entity Framework 4. Не все таблицы имеют одинаковое количество или тип столбцов.

Если я представляю данные в виде списка с использованиемЭлемент управления DataGrid, как изменить типы столбцов в зависимости от отображаемого типа данных?

Я искал на разных сайтах, но не нашел ничего подходящего.

Я думал, что смогу использовать DataTemplate, а затем использовать DataTemplateSelector, но я не вижулюбой способ создания DataTemplate для DataGrid.

Тогда я подумал, что буду использовать ContentPresenter, но не могу понять, как вы выберете шаблон.

В идеале я хотел бы использовать какой-то og TemplateSelector, так как я мог бы затем контролироватьшаблон из кода в виде нескольких таблиц имеет одинаковую структуру, и поэтому было бы здорово повторно использовать шаблон для тех таблиц, которые одинаковы.

Любая помощь будет принята с благодарностью, так как я уверен, что должна бытьболее элегантное решение, чем создание нескольких представлений.

Спасибо

Саймон

Ответы [ 2 ]

0 голосов
/ 07 сентября 2010

Этот ответ может вам помочь.Это позволяет добавлять и удалять столбцы в стиле MVVM.

Обратите внимание, что ответ связывается с коллекцией DataGridColumns. Я изменил его, чтобы привязать к моей ColumnViewModel. Таким образом, мое решение больше MVVM, так как не требует использования пространства имен элемента управления в моем коде ViewModel.1005 *

Вы можете сделать подобное на основе этого ответа и, возможно, создать различные подклассы вашей ColumnViewModel для привязки и использования GetType в расширении для поддержки ваших потребностей, отмеченных в вопросе.

0 голосов
/ 13 августа 2010

Я бы посмотрел на WCF RIA, хотя это потребовало бы некоторых изменений в том, как вы взаимодействуете с данными.По сути, у вас есть Entity Model, которая обрабатывает постоянное состояние, необходимое для операций CRUD, и симпатичную сетку данных Silverlight, где вы можете редактировать ячейку за раз.В сети есть образцы, и я могу найти их, если вам понадобится менее 30 минут, чтобы подготовить образец к работе.

...