Como evitar artefatos visuais ao hospedar controles de usuário WPF em um aplicativo WinForms MDI?

Ao hospedar controles de usuário WPF em um aplicativo WinForms MDI, há um problema de desenho quando você tem vários formulários que se sobrepõem, causando artefatos visuais muito distintos. Esses artefatos são visíveis principalmente após arrastar um formulário filho sobre outro que também hospeda o conteúdo WPF ou permitindo que as bordas do formulário filho sejam cortadas pelo pai MDI principal ao arrastá-lo. Depois que o arrastar e soltar do formulário filho é concluído, os artefatos permanecem em geral, mas descobri que definir o foco para a janela de um aplicativo diferente e depois voltar a focar novamente na janela do aplicativo para que seja redesenhado e que tudo fique bom até o filho formulários são movidos mais uma vez. Por favor, veja a imagem abaixo, que demonstra o problema.

Os membros da Microsoft insistem que o WinForms MDI já é uma solução suficiente para o MDI e não precisa se reinventar no WPF, embora eu ache difícil acreditar que eles tentaram criar um aplicativo WPF dessa maneira, devido às deficiências óbvias.

ATUALIZAR: Algumas anotações extras que deixei de fora é que, se eu criar esses formulários sem definir o MdiParent, eles serão criados como formulários regulares e esse problema não ocorrerá. Esse problema parece exclusivo ao cenário MDI do WinForms. Atualmente, também estou executando o Windows 7 Enterprise e estou ciente de que os resultados podem ser bem diferentes no Windows XP, mas não pude testar isso.

ATUALIZAR: Encontrei alguns outros recursos relacionados a esse assunto que pensei em compartilhar.

problema elementHost repintar no aplicativo MDI

O elementHost repinta o problema no aplicativo MDI no Tech Archive

questionAnswers(4)

yourAnswerToTheQuestion