|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.03.2016, 22:31 | #1 |
Регистрация: 30.04.2012
Сообщений: 8
|
WPF и ADO.net
Пишу диплом, база данных отдела кадров на c# и MSSQL server. На WinForms делаю подобные программы без особых трудностей, на мой взгляд там все логично и понятно. Сейчас дипломный руководитель хочет, чтобы я использовал технологию wpf. В итоге столкнулся с несколькими трудностями почти в самом начале:
Какую технологию доступа к базе выбрать? Я хотел ограничиться простыми запросами. Через dataReader сделал выборку из четырёх таблиц и записал полученную таблицу в ArrayList, в коде .cs присвоил DataGrid.ItemSource мой ArrayList и в xaml коде связал каждый столбец с соответствующим полем таблицы. Здесь все получилось. В DataGrid краткая информация, для выделенной строки нужно остальные поля отобразить в соответствующих TextBox-ах на этой же форме. Вот так и не понял как это сделать. Можно ли с таблицей dataGrid работать так же как в ВинФормс, как с двумерным массивом? И это я ещё не пробовал записывать данные введённые на форме в базу SQL server, думаю тоже сюрпризы ждут. Пробовал EntityFramevork, тоже извращение какое-то на первый взгляд. Может ли кто-то посоветовать в каком направлении двигаться? Я не нашёл даже более-менее нормальную информацию по WPF, везде поверхностно разбирают Binding, EntityFramework и работу с БД, на примитивных простых примерах, а как это все реализовать на примерах чуть посложнее, где больше двух таблиц и больше функционал чем две кнопки, так и не нашёл. |
28.03.2016, 22:37 | #2 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
В WPF обычно используют биндинги, MVVM и т.п.
Просто прибиндите свой список к ДатаГрид (ItemsSource или типа того, и в столбцах указать свойства). Только обычно лучше использовать не обычный List, а хотя бы ObservableCollection например. Для выбранного элемента тоже биндинг к SelectedItem или типа того (например завести отдельное свойство для этого, во ViewModel). EntityFramework или обычный ADO.NET особой разницы нет для WPF, но вообще EF обычно проще/удобнее. Цитата:
Есть же List<T>
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 28.03.2016 в 22:53. |
|
30.03.2016, 12:00 | #3 |
Регистрация: 30.04.2012
Сообщений: 8
|
Первое впечатление от mvvm и EntityFramework, что это издевательство какое-то. Даже для простейшего приложения создаётся куча классов и требуется написать большое количество кода и вместо того, чтобы разрабатывать бизнес-логику приложения приходится большую часть времени тратить на интерфейс, на привязку, на реализацию классов и интерфейсов для взаимодействия элементов окна с данными. Конечно, если разобраться в материале, это все делается на автомате и проблем не возникает, но удобство в чем? WinForms морально устаревшая технология со своими недостатками, но писать на мой взгляд гораздо проще и удобней. Почему в wpf нельзя сделать что-то близкое к mvp? Есть данные, есть элементы интерфейса и через свои методы, свойства и поля они взаимодействуют друг с другом в слое бизнес-логики без множества лишних действий.
|
30.03.2016, 12:30 | #4 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
mvvm и EntityFramework никак не связаны друг с другом. Можете и без EF читать/записывать данные самостоятельно.
Если вам нравится dataReader, то что мешает прочитать данные в коллекцию (List, ObservableCollection, ...) и прибиндить? Цитата:
Но в WPF есть фичи типа биндинга делающие использование MVVM более удобным. Про преимущества и удобства зависит от реализации. Что за классы и интерфейсы, на которые вы тратите кучу времени? Для начала можно например на библиотеку MvvmLight посмотреть. Там в основном просто вспомогательные классы упрощающие работу без принуждения к чему-либо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
31.03.2016, 11:22 | #5 |
Регистрация: 30.04.2012
Сообщений: 8
|
Создал форму, загрузил данные в коллекцию List<>, связал данные с dataGrid. А вот как дальше связать TextBox с соответствующим полем таблицы, и как правильно сделать обработчик события, чтобы при выделении другой записи, менялся текст в TextBox?
Видел пример, где связывали всю панель, содержащую данные через DataContext, у меня не получилось подобное. DataGrid получилось связать только в .cs файле. PHP код:
PHP код:
PHP код:
|
31.03.2016, 12:19 | #6 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
И еще желательно INotifyPropertyChanged использовать. Цитата:
Или как-то так: Код:
Код:
Код:
Код:
Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 27.05.2016 в 08:16. |
||
01.04.2016, 18:41 | #7 |
Регистрация: 30.04.2012
Сообщений: 8
|
Вроде бы начал въезжать, но все-таки каша в голове какая-то и свой пример не могу пока реализовать, слишком много всего сразу нужно сделать даже для простейших действий. Не нашёл ни одного полноценного примера, где подобное реализовано по шагам с более-менее подробным объяснением для новичка, про то как с SelectedItem работать видел в одном примере только и то там без объяснения оставили.
|
01.04.2016, 18:53 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.04.2016, 22:44 | #9 |
Регистрация: 30.04.2012
Сообщений: 8
|
В итоге продвинулся в написании. Но я пока не могу использовать возможности wpf как надо, только байндинг где без него никак. Грубо говоря как и раньше использую императивный подход, декларативный только начинаю постигать.
Спасибо за помощь и за внимание)) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тема для курсовой работы C#, WinForms, GDI++, ADO.NET, WPF. | AIR_3 | Помощь студентам | 0 | 28.11.2012 17:23 |
Программист (VB).NET+WPF | gr1983 | Фриланс | 3 | 14.02.2011 07:11 |
Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net | gammaray | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 2 | 22.11.2010 17:36 |