Pergunta
Eu tenho um aplicativo WinForms existente para o qual estou agora a concepção de novos bits de WPF. As coisas estão indo razoavelmente bem e eu ter executado em minha primeira necessidade para um diálogo.
Eu gostaria de fazer o diálogo no WPF. Parece que eu estou indo para necessidade de fazer um UserControl para o conteúdo real e depois host que o conteúdo através de um WinForms formar com um ElementHost (desde UserControl não tem nenhum método ShowDialog ()).
E é aí que a minha pergunta é. Como isso funciona? Melhor eu posso dizer, o WPF UserControl não tem sequer uma propriedade DialogResult (que faz sentido, dado que não tem nenhum método ShowDialog ()) - parece-me que eu precisaria de um controle WPF janela - e eu não acho que eu posso usar que neste caso.
Lutando com o fluxo básico e configuração das coisas aqui. Pode alguém brilhar uma luz?
Isto é mesmo possível?
Solução
Você pode abrir uma janela WPF de um aplicativo WinForms.
Apenas criar o ShowDialog()
janela e chamada. O CLR irá carregar o framework WPF e abrir a janela.
Outras dicas
Se você quiser que seu aplicativo de interoperabilidade para o trabalho principalmente como um aplicativo WinForms, então a abordagem que descrevem funciona bem - Eu praticamente a mesma coisa em meus casos de interoperabilidade
.WPF suporta MessageBoxes (embora uma versão ligeiramente diferente do que WinForms), e você pode colocar algo juntos usando WPF (Windows estendendo-lo adicionando algo semelhante a DialogResult). No entanto, os controles WPF fornecidos sugerem que eles estão tentando mudar as interações UX para minimizar diálogos, especialmente os modais.
Para facilitar a sua vida, porém, eu criaria um WinForms Form / ElementHost subclasse especificamente para lidar w / hospedagem de conteúdo WPF, e dependendo de como limpa-lo como seus "usando" declarações, envolvendo o seu próprio DialogResult-like enumeração assim você não tem que incluir o namespace System.Windows.Forms que pode fazer seus WPF código-behinds mais complicado.