2009-09-09 2 views
8

Может ли информация IDataError правильно использоваться в приложении winforms? Раньше я делал свою привязку обычным способом (1) и выполнял валидацию в событии OnValidating конкретного элемента управления. Я хотел бы переместить проверку данных на модель домена, чтобы я мог легко менять пользовательские интерфейсы и чтобы вся логика находилась в одном месте.IDataErrorInfo в winforms

Я искал IDataErrorInfo, но все, что я нахожу, касается WPF и приложения в разработке - это просто приложение winforms.

Я также заметил, что привязка, которая используется в WPF, содержится в System.Windows.Data и привязке, которую я всегда использовал, находится в System.Windows.Forms (чего у меня нет, когда я попробуйте добавить его в качестве ресурса - я использую 3.5). Помимо свойства «ValidatesOnDataErrors» есть ли разница между ними?

(1) обычный способ является:

myControl.DataBindings.Add(new Binding("Text", this.domainModel, "Property")); 

ответ

9

Это работает с компонентом ErrorProvider в Windows Forms.

Полный, но очень простой и короткий учебник см. this blog post.

+0

+1 Фантастический пост в блоге. Вылечил все мои текущие проблемы. Большое спасибо. –

+4

Похоже, что ссылка на * фантастическое сообщение в блоге * нарушена: эта ссылка относится только к устаревшей. –

+0

@ Bjørn-RogerKringsjå На самом деле это не ответ только для ссылок. Предложение «ErrorProvider» дает ответ без ссылки. – Taryn

1

Да, IDataErrorInfo работает в WinForms. Например, DataGridView будет использовать это автоматически как для каждой строки, так и для каждой ячейки. Но он специфичен для реализации и не является автоматически применяется к другим связям. Однажды я написал код, чтобы связать его с провайдером ошибок и выполнить работу с помощью событий изменения, но у меня нет к нему возможности, к сожалению. Но, похоже, я помню, что это было не так уж и огромно.