2010-02-12 8 views
4

У меня есть список классов, которые представляют таблицы mydatabase, например Address, Client.Winforms Databinding с ViewModel

Мой GUI имеет тенденцию быть сеткой данных и формой ввода данных. Это отлично подходит для ввода данных с одной таблицей, однако теперь у меня есть форма, в которой есть информация о клиенте и их адрес.

Я думал о том, чтобы использовать ViewModel, объединяющий класс Address и Client, и назначая это связующему источнику и привязывая к нему свои элементы управления.

Как связать элементы управления с именами свойств? Будет ли эта работа ...

if (txtLine1.DataBindings.Count == 0) 
       txtLine1.DataBindings.Add("Text", bindingSource, "Address.Line1", false, DataSourceUpdateMode.OnPropertyChanged); 

Имеет ли ViewModel даже возможную привязку Winforms?

ответ

2

Я создал ViewModel, а затем создал DataSource в VS. Затем я перетащил свойства классов в моей viewmodel в форму и создал созданные элементы управления. Затем я вызываю метод Save для каждого класса в моей модели viewmodel.

1

Если вы используете конструктор VS, вы можете установить привязку, используя это в свойстве привязки элемента управления - пусть код шаблона будет создан VS, если он не свяжет что-то в конструкторе и не проверит сгенерированный код , Просто добавьте BindingSource в свою форму и привяжите его к свойствам. Затем установите параметр BindingSource.DataSource, когда у вас есть ViewModel.

Ключом к привязке к ViewModel в WinForms является реализация интерфейса INotifyPropertyChange и запуск события PropertyChanged в настройках всех ваших свойств на модели, передающих имя свойства в виде строки. Это событие улавливается любыми элементами управления WinForms, которые будут обновляться, если вы измените что-либо на модели. Это также означает, что вы можете поймать событие на презентаторе, если оно есть, и выполнить там какие-либо вычисления/действия.

Смежные вопросы