Элемент управления 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.