Как я могу проверить свои сущности при нажатии кнопки сохранения через IDataErrorInfo? - PullRequest
2 голосов
/ 23 февраля 2012

Я реализовал IDataErrorInfo интерфейс для проверки своих сущностей.

<TextBox Text="{Binding User.Name, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />

Работает нормально, но я хочу еще раз проверить данные, когда пользователь нажимает кнопку сохранения.Есть ли какой-нибудь способ для достижения этой функциональности в IDataErrorInfo.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Может быть, вам следует рассмотреть возможность использования интерфейса INotifyDataErrorInfo

это даст вам больше контроля ... включая метод GetErrors и другие, которые вы можете выполнить с помощью команды нажатия кнопки (я полагаю, вы используете MVVM)

найти информацию здесь:

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx

и хороший пост в блоге здесь:

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-binding-with-inotifydataerrorinfo.aspx

2 голосов
/ 23 февраля 2012

IDataInfo требует реализации двух вещей

  1. Свойство индексатора
  2. Свойство ошибки, которое имеет значение null или string. Пусто, когда все в порядке. В противном случае это описание ошибки.

Если вы хотите вручную проверить вашу сущность перед сохранением, вы можете просто проверить свойство .Error и делать сохранение только тогда, когда .Error имеет значение null или пусто. Я не знаю, каким образом EF может автоматически использовать IDataErrorInfo. Однако, когда ваш пользовательский интерфейс реализован правильно, у пользователя не должно быть возможности сохранять данные, пока все не будет в порядке. Вы можете реализовать это с помощью свойства CanExecuteChanged команды (делайте его истинным только тогда, когда .Error имеет значение null или пусто).

...