Как в целом создаются приложения, управляемые данными

Я новичок в программировании .net и изучаю WPF в течение последнего месяца. С самого начала меня смущало то, как создаются приложения, управляемые данными в реальном времени. Я начал с простого приложения, в котором мне нужно было привязать данные к сетке данных, в которой было бы около 10 столбцов. Обычный способ привязки данных, который я видел во всех руководствах, - это образцы данных, с помощью которых они создают бизнес-объект (максимум два / три поля). Но когда дело доходит до обработки больших объектов данных, пишут ли они геттеры / сеттеры для всех полей 10/15? Для этого я предпочел напрямую связывать DataGrid с DataTables, что требует меньшего количества кода. Но похоже, что этот подход может упустить несколько преимуществ, таких как уведомление об изменении источника / коллекции и т. Д. Я ничего не знаю о создании приложений в реальном времени. Было бы неплохо, если бы я получил руководство по этому поводу.


person sarath    schedule 21.09.2010    source источник
comment
Кстати, как только вы пройдете около 7 столбцов, данные станут труднее понять для обычного человека. Если вам нужно представить много данных, настоятельно рекомендуется иметь какой-либо способ фильтрации отображаемых столбцов. В зависимости от характера данных, также может быть возможно объединить некоторые столбцы вместе, чтобы предоставить значимую сводную информацию, которую легче понять, чем необработанные столбцы. Для вопросов такого типа полезно собрать примеры использования того, как пользователи на самом деле захотят использовать данные, и сформировать пользовательский интерфейс в соответствии с ними.   -  person Dan Bryant    schedule 21.09.2010


Ответы (4)


У меня нет опыта работы с более чем 15-20 столбцами в DataGrid, но для этого я создал геттеры и сеттеры для свойств.

Конечно, также помогает создание фрагмента кода, который шаблонизирует свойство с помощью INotifyChanged. http://drwpf.com/blog/2007/11/17/my-wpf-code-snippets/

Это также может зависеть от того, откуда вы берете свои объекты. В одном из моих проектов сущности поступали из Entity Framework, который реализовал INotifyPropertyChanged для свойств, поэтому в этом случае мне не нужно было писать свойства обертывания. Я мог бы привязать свойства сущностей непосредственно к столбцам datagrid.

person ThomasAndersson    schedule 21.09.2010

Для разработки приложений, управляемых данными, не существует серебряной пули. Я пишу приложение Enterprise Resource Planning, используя структуру приложения в стиле SOA, чтобы зарабатывать себе на жизнь - и могу заверить вас, что я никогда не использую DataTables напрямую :-). DataTables хороши IMO, если у вас есть только один пользователь и ограниченные объемы данных. Как только вы добавите второго пользователя ... вам следует отказаться от DataTables (и DataSets и т. Д.)

Но чтобы ответить на ваш вопрос - когда у меня есть большие наборы данных с объектами со многими свойствами, я обычно показываю максимум около 10 столбцов - если есть больше свойств, я помещаю их в раздел «Подробности» / отдельное представление сведений. Затем я привязываю отдельные столбцы к 10 (или около того) наиболее важным свойствам объектов.

Я использую DataGrid (табличные данные для чтения и записи) только для очень маленьких коллекций с довольно простыми объектами - обычно это свойство коллекции родительского объекта. В другом месте я использую ListBox или ListView и показываю только данные (только для чтения), а затем раздел сведений для создания / обновления одного элемента. Это значительно упрощает обработку CRUD-операций (создание / чтение / обновление / удаление) в базе данных и из нее (или любого другого хранилища данных, которое у вас есть).

Начать работу в WPF с множеством возможностей может быть немного утомительно, но я бы посоветовал вам в какой-то момент взглянуть на M-V-VM, чтобы по-настоящему использовать мощность (и простоту) WPF. Я написал серию блогов из десяти сообщений для одного способа сделать это - он начинается с здесь. Он может быть немного выше вашего уровня, если вы только начинаете, но оставьте его на один из тех дней, когда вы не можете заснуть ... :-)

Надеюсь, это по крайней мере дало вам несколько указателей :-)

person Goblin    schedule 21.09.2010
comment
Привет, Гоблин, спасибо за это. На самом деле я мог бы выбрать это как второй ответ, если бы это было разрешено. Еще раз спасибо за идеи. :) - person sarath; 23.09.2010
comment
Не беспокойтесь - рад, что вам помог :) - person Goblin; 23.09.2010

Возможно, это поможет:

Как привязать WPF DataGrid на переменное количество столбцов?

http://www.codeproject.com/KB/WPF/MovingTowardWpfBinding.aspx

person Mamta D    schedule 21.09.2010
comment
Первая ссылка - это другой сценарий, а вторая - основы привязки. Но я хотел знать, как в реальных приложениях создаются десятки объектов, включающих объекты коллекций. - person sarath; 21.09.2010

Обычно в крупномасштабных корпоративных приложениях у вас есть бизнес-объекты (BO), имеющие 8-10 свойств (полей). Когда таблицы в БД становятся больше, выполняется нормализация, чтобы уменьшить количество столбцов и создать разные таблицы (связанные через внешние ключи); то же самое делается в случае с Бо, они разработаны (с использованием различных концепций ООП) так, что каждый БО будет иметь все связанные свойства вместе и поддерживать размер. Большие БО будут комбинацией этих меньших БО. Это повышает удобство использования, и в то же время вам не нужно иметь дело с БО, имеющим множество свойств.

person akjoshi    schedule 22.09.2010