WPF: можно ли автоматически вызывать BeginEdit (IEditableObject) при обновлении источника привязки? - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть класс, который реализует IEditableObject, и теперь мне интересно, можно ли автоматически вызывать BeginEdit () при обновлении источника привязки?

Существует два возможных сценария:

  1. Объект заполняется через базу данных.В этом случае я не хочу вызывать BeginEdit ().
  2. Объект заполняется через поля ввода пользователем.В этом случае я хотел бы автоматически вызывать BeginEdit () при обновлении источника (я использую двустороннее связывание и INotifyPropertyChanged).

Я рассматривал возможность вызова BeginEdit (), когда свойствоизменилось, но это не согласуется с первым сценарием, поскольку я не хочу, чтобы BeginEdit () вызывался при заполнении из базы данных.

1 Ответ

0 голосов
/ 18 февраля 2010

Вам нужен способ определения источника популяции объектов. enum может сделать это, и затем в вашем PropertyChanged вы можете проверить, что вызвало изменение свойства, и на основании этого вы можете позвонить BeginEdit() или нет.

Enum PopulateSource
{
   Database = 0,
   User
}

Теперь при обновлении из базы данных установите Enum на PopulateSource.Database. Когда он изменяется, потому что пользователь изменил его, вы устанавливаете его на PopulateSource.User. Теперь вы можете проверить в PropertyChanged, в каком состоянии находится эта переменная, и определить, следует ли вызывать BeginEdit().

.
...