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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top