Я новичок в программировании .net и изучаю WPF в течение последнего месяца. С самого начала меня смущало то, как создаются приложения, управляемые данными в реальном времени. Я начал с простого приложения, в котором мне нужно было привязать данные к сетке данных, в которой было бы около 10 столбцов. Обычный способ привязки данных, который я видел во всех руководствах, - это образцы данных, с помощью которых они создают бизнес-объект (максимум два / три поля). Но когда дело доходит до обработки больших объектов данных, пишут ли они геттеры / сеттеры для всех полей 10/15? Для этого я предпочел напрямую связывать DataGrid с DataTables, что требует меньшего количества кода. Но похоже, что этот подход может упустить несколько преимуществ, таких как уведомление об изменении источника / коллекции и т. Д. Я ничего не знаю о создании приложений в реальном времени. Было бы неплохо, если бы я получил руководство по этому поводу.
Как в целом создаются приложения, управляемые данными
Ответы (4)
У меня нет опыта работы с более чем 15-20 столбцами в DataGrid, но для этого я создал геттеры и сеттеры для свойств.
Конечно, также помогает создание фрагмента кода, который шаблонизирует свойство с помощью INotifyChanged. http://drwpf.com/blog/2007/11/17/my-wpf-code-snippets/
Это также может зависеть от того, откуда вы берете свои объекты. В одном из моих проектов сущности поступали из Entity Framework, который реализовал INotifyPropertyChanged для свойств, поэтому в этом случае мне не нужно было писать свойства обертывания. Я мог бы привязать свойства сущностей непосредственно к столбцам datagrid.
Для разработки приложений, управляемых данными, не существует серебряной пули. Я пишу приложение Enterprise Resource Planning, используя структуру приложения в стиле SOA, чтобы зарабатывать себе на жизнь - и могу заверить вас, что я никогда не использую DataTables напрямую :-). DataTables хороши IMO, если у вас есть только один пользователь и ограниченные объемы данных. Как только вы добавите второго пользователя ... вам следует отказаться от DataTables (и DataSets и т. Д.)
Но чтобы ответить на ваш вопрос - когда у меня есть большие наборы данных с объектами со многими свойствами, я обычно показываю максимум около 10 столбцов - если есть больше свойств, я помещаю их в раздел «Подробности» / отдельное представление сведений. Затем я привязываю отдельные столбцы к 10 (или около того) наиболее важным свойствам объектов.
Я использую DataGrid (табличные данные для чтения и записи) только для очень маленьких коллекций с довольно простыми объектами - обычно это свойство коллекции родительского объекта. В другом месте я использую ListBox или ListView и показываю только данные (только для чтения), а затем раздел сведений для создания / обновления одного элемента. Это значительно упрощает обработку CRUD-операций (создание / чтение / обновление / удаление) в базе данных и из нее (или любого другого хранилища данных, которое у вас есть).
Начать работу в WPF с множеством возможностей может быть немного утомительно, но я бы посоветовал вам в какой-то момент взглянуть на M-V-VM, чтобы по-настоящему использовать мощность (и простоту) WPF. Я написал серию блогов из десяти сообщений для одного способа сделать это - он начинается с здесь. Он может быть немного выше вашего уровня, если вы только начинаете, но оставьте его на один из тех дней, когда вы не можете заснуть ... :-)
Надеюсь, это по крайней мере дало вам несколько указателей :-)
Возможно, это поможет:
Как привязать WPF DataGrid на переменное количество столбцов?
http://www.codeproject.com/KB/WPF/MovingTowardWpfBinding.aspx
Обычно в крупномасштабных корпоративных приложениях у вас есть бизнес-объекты (BO), имеющие 8-10 свойств (полей). Когда таблицы в БД становятся больше, выполняется нормализация, чтобы уменьшить количество столбцов и создать разные таблицы (связанные через внешние ключи); то же самое делается в случае с Бо, они разработаны (с использованием различных концепций ООП) так, что каждый БО будет иметь все связанные свойства вместе и поддерживать размер. Большие БО будут комбинацией этих меньших БО. Это повышает удобство использования, и в то же время вам не нужно иметь дело с БО, имеющим множество свойств.