Controle WPF WebBrowser não entra no modo de design quando a propriedade do documento é alterada

Eu tenho um problema frustrante. Aqui está uma versão simplificada do que estou fazendo:

Um UserControl em c # contém uma barra de ferramentas e um objeto incorporado do WebBrowser. A barra de ferramentas contém um botão "Editar", que, quando clicado, define o controle do navegador da Web no modo de design. Outro botão, "Cancelar", desativa o modo de design.

Pseudocódigo (muito simplificado):

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
}

O problema: Se eu clicar na página da Web exibida e, em seguida, no botão "Editar", o controle WebBrowser não se tornará editável. O ponteiro do mouse ao passar o mouse sobre fotos / links mostra os ponteiros do mouse de navegação do navegador da Web, não os de edição. Se eu clicar no texto, o cursor não será exibido.

Depuração revela que a propriedade designMode no documento é realmente definida como "On" nessa situação, mas o controle está se comportando como se estivesse definido como "Off".

Se eunão faça clique na página da web antes de clicar no botão "Editar",tudo funciona como esperado.

Elaboração: Se eu clicar no botão "Cancelar" quando o controle estiver no modo de design, obtenho o comportamento (errado) correspondente, se o documento tiver sido clicado.

Basta clicar em "Editar", depois "Cancelar", depois "Editar", etc., sem nunca clicar no documento, funciona bem (o teste mouseover mostra os ponteiros do mouse apropriados, e recebo navegação ou edição de link dependendo do modo de design se clique em um link no documento exibido).

Eu tentei várias técnicas para se certificar de que outro controle obtém o foco antes de alterar a propriedade designMode, mas não faz nenhuma diferença. Eu pesquisei no MSDN e metade da internet conhecida e não encontrei nenhuma menção a esse tipo de problema. Invertendo a propriedade designMode como esta parece ser bastante unusal.

Mais uma pequena informação: estou configurando eventos de documentos, aconselhando o documento com um coletor implementado pelo usercontrol. Duvido que isso tenha qualquer influência sobre o problema, mas incluí-lo aqui para ser completo.Atualizar: Desabilitar isso não muda nada em relação ao problema.

Alguém reconhece esse problema?

Atualizar: Eu trabalhei em torno do problema, recriando o controle do navegador da Web em SetDesignMode (). É uma solução feia, mas funciona e parece bem. Estou muito interessado em qualquer feedback sobre este problema, no entanto. Eu acredito que é um bug no MSHTML.

questionAnswers(2)

yourAnswerToTheQuestion