Я создал свойство зависимости типа Binary в RichTextBox, которое позволяет мне привязываться к FlowDocument, который находится в двоичной форме (byte []) внутри ViewModel. Это хорошо работает, свойство конвертируется в и обратно правильно.
Всякий раз, когда RichTextBox теряет фокус, значение свойства зависимости обновляется новым двоичным представлением FlowDocument.
Моя проблема в том, что если я использовал RichTextBox и закрываю окно, RichTextBox не теряет фокус, и, следовательно, свойство зависимости не обновляется с новым двоичным представлением FlowDocument, и поэтому новые изменения не фиксируются в база данных. В моей ViewModel у меня есть метод CleanUp, который вызывается, когда ViewModel готовится к утилизации, где я могу сохранить обновленный документ.
Как я могу заставить свойство зависимости обновляться, так как RichTextBox не теряет фокус, если пользователь щелкает, чтобы закрыть окно?
Я мозговой штурм следующее:
- Скажите свойству зависимости обновляться через широковещательную рассылку. Мне не ясно, как зарегистрировать прослушиватель сообщений в свойстве зависимости.
- Запросите RichTextBox напрямую, получите документ, преобразуйте его в двоичный объект вручную.
- Получите представление для перемещения фокуса на фиктивный элемент управления, чтобы свойство зависимости теперь обновлялось само.
Что вы, ребята, думаете?
Обновление: событие при изменении для свойства зависимости добавляет обработчик события, который ожидает, что RichTextBox потеряет фокус. Именно этот обработчик обновляет зависимость новым значением.