Произошло ли какое-либо событие до обновления источника привязки WPF? - PullRequest
2 голосов
/ 15 июля 2011

Со следующим WPF TextBox, TextBox_SourceUpdated вызывается после источник привязки обновлен:

<TextBox Text="{Binding Path=title, NotifyOnSourceUpdated=True}"
         SourceUpdated="TextBox_SourceUpdated" />

Есть ли событие, которое запускается до обновления источника привязки?

UPDATE

Я уже поиграл с вызовом GetBindingExpression(TextBox.TextProperty).UpdateSource() из события LostFocus в сочетании с UpdateSourceTrigger=Explicit. Я очень недоволен этим подходом, так как мне приходится:

  • убедитесь, что DataContext не отключен
  • убедитесь, что IsLoaded == true
  • проверьте, изменилось ли значение вообще, чтобы начать с

Это больно, поэтому я ищу что-то еще; что-то попроще.

2-е ОБНОВЛЕНИЕ

Так что я сдался. Я решил вернуться к использованию события SourceUpdated (вызванного после обновления источника, как следует из названия) и всегда сохранять точку сохранения sqlite до того, как может произойти любое из этих обновлений источника, что позволяет всегда возвращаться точно до того, как произошло обновление.

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Я не думаю, что вы можете что-то сделать напрямую с событиями Binding.В зависимости от того, чего вы пытаетесь достичь, некоторая комбинация событий TextChanged и PreviewLostKeyboardFocus может сделать то, что вам нужно.Оба эти события произойдут до SourceUpdated.Событие TextChanged будет запускаться при каждом вводе ключа, но по умолчанию UpdateSourceTrigger из LostFocus PLKF будет запускаться один раз, непосредственно перед тем, как привязка отправит обновления и инициирует SourceUpdated.

0 голосов
/ 15 июля 2011

Единственный способ, которым я мог бы придумать для симуляции такой функции, это сделать двойное связывание со свойством прокси. Например:

Свойство A: {Binding ABProxy, Mode = TwoWay}

Свойство B: {Binding ABProxy, Mode = TwoWay}

Свойство ABProxy: (используется как прокси, источник привязки и цель)

Затем вы можете прослушивать обновление A своего источника, чтобы сделать что-то до обновления B, или прослушивать изменение прокси и т. Д.

Если у вас была односторонняя привязка, вы можете просто привязать свойство proxy и в своем обновлении решить, распространять ли изменение на свойство B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...