Элемент управления WPF WebBrowser не входит в режим разработки при изменении свойства документа

У меня неприятная проблема. Вот упрощенная версия того, что я делаю:

UserControl в c # содержит панель инструментов и встроенный объект WebBrowser. Панель инструментов содержит кнопку «Редактировать», которая при нажатии устанавливает веб-браузер в режиме конструктора. Другая кнопка «Отмена» отключает режим дизайна.

Псевдокод (очень упрощенный):

public void SetDesignMode(bool dm) {
  IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
  if (dm) doc.designMode = "On";
  else doc.designMode = "Off";
  _designMode = dm;
  ReloadDocument(); // setting designmode clears the document element, so it must be reloaded
}

public void OnLoadCompleted() {
  IHTMLDocument2 doc = webBrowser.Document as IHTMLDocument2;
  if (!_documentLoaded) {
    if (_designMode) doc.designMode = "On";
    else doc.designMode = "Off";
    ReloadDocument();
    _documentLoaded = true;
  }
}

public void ReloadDocument() {
  _documentLoaded = false;
  // code that navigates to the document
}

Проблема: Если я нажму на отображаемую веб-страницу, а затем на кнопку «Редактировать», элемент управления WebBrowser не станет редактируемым. Указатель мыши при наведении курсора на картинки / ссылки отображает навигационные указатели мыши в браузере, а не редактируемые. Если я нажму на текст, каретка не будет отображаться.

Отладка показывает, что свойство designMode в документе на самом деле имеет значение «Вкл.» В этой ситуации, но элемент управления ведет себя так, как будто он установлен на «Выкл.».

Если яне нажмите на веб-страницу, прежде чем нажать кнопку «Редактировать»,все работает как положено.

Разработка: Если я нажимаю кнопку «Отмена», когда элемент управления находится в режиме разработки, я получаю соответствующее (неправильное) поведение, если документ был нажат.

Просто нажмите «Редактировать», затем «Отмена», затем «Редактировать» и т. Д., Даже не щелкая в документе, и работает нормально (тест при наведении курсора показывает правильные указатели мыши, и я получаю навигацию по ссылкам или редактирование в зависимости от режима разработки, если я нажмите на ссылку в отображаемом документе).

Я пробовал различные методы, чтобы убедиться, что другой элемент управления получает фокус, прежде чем я изменю свойство designMode, но это не имеет никакого значения. Я искал MSDN и половину известного интернета и не нашел упоминаний о подобных проблемах. Подобное свойство designMode выглядит довольно необычно.

Еще одна небольшая информация: я настраиваю события документа, советуя документу с приемником, реализованным usercontrol. Я сомневаюсь, что это должно иметь какое-либо отношение к проблеме, но я включил это здесь ради полноты.Обновить: Отключение этого ничего не меняет в отношении проблемы.

Кто-нибудь признает эту проблему?

Обновить: Я обошел проблему, заново создав элемент управления веб-браузера в SetDesignMode (). Это уродливое решение, но оно работает и на самом деле выглядит хорошо. Я очень заинтересован в любых отзывах по этой проблеме, хотя. Я считаю, что это ошибка в MSHTML.

Ответы на вопрос(2)

Ваш ответ на вопрос