Cenários Suportados no Windows Presentation Foundation e Interoperação Windows Forms
WPF e Windows Forms apresentam duas diferentes arquiteturas para criação de interfaces de aplicativo. O espaço de nomes System.Windows.Forms.Integration fornece classes que permitem cenários comuns de interoperação. As duas classes chave que implementam recursos de interoperabilidade são WindowsFormsHost e ElementHost. Este tópico descreve quais cenários de interoperação são suportados e quais cenários não são suportados.
Observação: |
---|
É dada atenção especial ao controle híbrida cenário. Um controle híbrido tem um controle de uma tecnologia aninhado em um controle da outra tecnologia. Isso também é chamado de interoperação aninhada. Um controle multinível híbrido tem mais de um nível de de aninhamento de controles híbridos. Um exemplo de interoperação multinível aninhada é um controle Windows Forms que contém um controle WPF, que contém outro controle Windows Forms. Controles híbridos multinível não são suportados. |
Este tópico contém as seguintes seções.
- Hospedagem de Controles Windows Forms baseada em Windows Presentation Foundation
- Hospedagem de Controles Windows Presentation Foundation para Aplicativos baseados em Windows Forms
- Tópicos relacionados
Hospedagem de Controles Windows Forms baseada em Windows Presentation Foundation
Os seguintes cenários de interoperabilidade são suportados quando um controle WPF hospeda um controle Windows Forms:
O controle WPF pode hospedar um ou mais controles Windows Formsusando XAML.
Ele pode hospedar um ou mais controles Windows Forms usando código.
Ele pode hospedar controles contêineres Windows Forms que contêm outros controles Windows Forms.
Ele pode hospedar um formulário mestre/detalhes com um mestre WPF e detalhes Windows Forms.
Ele pode hospedar um formulário mestre/detalhes com um mestre Windows Forms e detalhes WPF.
Ele pode hospedar um ou mais controles ActiveX.
Ele pode hospedar um ou mais controles compostos.
Ele pode hospedar controles híbridos usando Extensible Application Markup Language (XAML).
Ele pode hospedar controles híbridos usando código.
Suporte à Layout
A lista a seguir descreve as limitações conhecidas quando o elemento WindowsFormsHost tenta integrar seu controle Windows Forms no sistema de layout WPF.
Em alguns casos, controles Windows Forms não podem ser redimensionados, ou podem ser dimensionados somente para dimensões específicas. Por exemplo, um controle ComboBox Windows Forms oferece suporte somente a uma única altura, que é definida pela tamanho da fonte do controle. Em um layout dinâmico WPF, que assume que elementos podem alongar-se verticalmente, um controle ComboBox hospedado não irá alongar-se conforme o esperado.
Controles Windows Forms não podem ser girados ou inclinados. Por exemplo, quando você rotaciona sua interface do usuário por 90 graus, controles hospedados Windows Forms manterão sua posição vertical.
Na maioria dos casos, controles Windows Forms não oferecem suporte à transformação de escala proporcional. Embora as dimensões gerais do controle sejam dimensionadas, controles filho e elementos componentes do controle podem não redimensionados conforme o esperado. Essa limitação depende de quanto cada controle Windows Forms oferece suporte à transformação de escala.
Em uma interface do usuário WPF, você pode alterar o z-order dos elementos para controlar comportamento de sobreposição. Um controle Windows Forms hospedado é desenhado em uma HWND separada, portanto é sempre desenhado por cima de elementos WPF.
Controles Windows Forms suportam autoescala baseada no tamanho da fonte. Em uma interface do usuário WPF, alterar o tamanho da fonte não redimensiona o layout inteiro, embora elementos individuais possam redimensionar dinamicamente.
Propriedades de Ambiente
Algumas das propriedades de ambiente de controles WPF têm equivalentes Windows Forms. Essas propriedades de ambiente são propagadas para os controles Windows Forms hospedados e expostas como propriedades públicas no controle WindowsFormsHost. O controle WindowsFormsHost converte cada propriedade de ambiente WPF em seu Windows Forms equivalente.
Para obter mais informações, consulte Formulários do Windows e mapeamento de propriedades do WPF.
Comportamento
A tabela a seguir descreve o comportamento de interoperação.
Comportamento |
Suportado |
Sem suporte |
---|---|---|
Transparência |
Renderização de controle Windows Forms oferece suporte à transparência. O plano de fundo do controle pai WPF pode se tornar o plano de fundo de controles Windows Forms hospedados. |
Alguns controles Windows Forms não têm suporte para transparência. Por exemplo, os controles TextBox e ComboBox não serão transparentes quando hospedados por WPF. |
Tabulação |
A ordem de tabulação de controles Windows Forms hospedados é igual a quando esses controles são hospedados em um aplicativo baseado em Windows Forms. Alternando de um controle WPF para um controle Windows Formscom a tecla TAB e teclas SHIFT+TAB funciona da maneira habitual. Controles Windows Forms que têm um valor da propriedade TabStop de false não recebem o foco quando o usuário alterna pelos controles.
|
Não aplicável. |
Navegação com teclas de direção |
|
Não aplicável. |
Aceleradores |
Aceleradores funcionam como de costume, exceto onde observado na coluna "Não suportado". |
Aceleradores duplicados entre tecnologias não funcionam como aceleradores duplicados comuns. Quando um acelerador é duplicado entre tecnologias, com pelo menos um em um controle Windows Forms e o outro em um controle WPF , o controle Windows Forms sempre recebe o acelerador. O foco não alterna entre os controles quando o acelerador duplicado é pressionado. |
Teclas de atalho |
Teclas de atalho funcionam como de costume, exceto onde observado na coluna "Não suportado". |
|
AcceptsReturn, AcceptsTab e outros comportamentos de controle específicos |
Propriedades que alteram o comportamento padrão do teclado funcionam como de costume, considerando que o controle Windows Forms sobrescreve o método IsInputKey para retornar true. |
Controles Windows Forms que alteram o comportamento padrão de teclado ao tratar o evento KeyDown são processadas por último no controle WPF hospedeiro. Como esses controles são processados por último, eles podem produzir um comportamento inesperado. |
Eventos de Entrar e Sair |
Quando o foco não estiver indo para o controle ElementHost que contém, os eventos de Entrar e Sair são disparados como de costume quando o foco muda em um único controle WindowsFormsHost. |
Eventos de Entrar e Sair não são disparados quando ocorrem as seguintes alterações de foco:
|
Multiencadeamento |
Todas as variedades de multithreading são suportadas. |
Ambas as tecnologias Windows Forms e WPF assumem um modelo de concorrência de segmento único. Durante a depuração, chamadas para objetos do framework de outros segmentos irão disparar uma exceção para impor essa exigência. |
Segurança |
Todos os cenários de interoperação requerem confiança total. |
Nenhum cenário de interoperação é permitido em confiança parcial. |
Acessibilidade |
Todos os cenários de acessibilidade são suportados. Produtos de tecnologia assistencial funcionam corretamente quando eles são usados para aplicativos híbridos que contêm tanto controles Windows Forms como WPF. |
Não aplicável. |
Área de transferência |
Todas as operações da área de transferência funcionam da maneira habitual. Isso inclui recorte e colagem entre controles Windows Forms e WPF . |
Não aplicável. |
Recurso de arrastar-e-soltar |
Todas as operações de arrastar-e-soltar funcionam da maneira habitual. Isso inclui operações entre controles Windows Forms e WPF . |
Não aplicável. |
Hospedagem de Controles Windows Presentation Foundation para Aplicativos baseados em Windows Forms
Os seguintes cenários de interoperabilidade são suportados quando um controle Windows Forms hospeda um controle WPF:
Hospedando um ou mais controles WPF usando código.
Associando um folha de propriedades a um ou mais controles WPF hospedados.
Hospedando uma ou mais páginas WPF em um formulário.
Iniciando uma janela WPF.
Hospedando um formulário mestre/detalhes com um Windows Forms mestre e detalhes WPF.
Hospedando um formulário mestre/detalhes com um WPF mestre e detalhes Windows Forms.
Hospedando controles WPF personalizados.
Hospedando controles híbridos.
Propriedades de Ambiente
Algumas das propriedades de ambiente de controles Windows Forms têm equivalentes WPF. Essas propriedades de ambiente são propagadas para os controles WPF hospedados e expostas como propriedades públicas no controle ElementHost. O controle ElementHost converte cada propriedade de ambiente Windows Forms em seu WPF equivalente.
Para obter mais informações, consulte Formulários do Windows e mapeamento de propriedades do WPF.
Comportamento
A tabela a seguir descreve o comportamento de interoperação.
Comportamento |
Suportado |
Sem suporte |
---|---|---|
Transparência |
Renderização de controle WPF oferece suporte à transparência. O plano de fundo do controle pai Windows Forms pode se tornar o plano de fundo de controles WPF hospedados. |
Não aplicável. |
Multiencadeamento |
Todas as variedades de multithreading são suportadas. |
Ambas as tecnologias Windows Forms e WPF assumem um modelo de concorrência de segmento único. Durante a depuração, chamadas para objetos do framework de outros segmentos irão disparar uma exceção para impor essa exigência. |
Segurança |
Todos os cenários de interoperação requerem confiança total. |
Nenhum cenário de interoperação é permitido em confiança parcial. |
Acessibilidade |
Todos os cenários de acessibilidade são suportados. Produtos de tecnologia assistencial funcionam corretamente quando eles são usados para aplicativos híbridos que contêm tanto controles Windows Forms como WPF. |
Não aplicável. |
Área de transferência |
Todas as operações da área de transferência funcionam da maneira habitual. Isso inclui recorte e colagem entre controles Windows Forms e WPF . |
Não aplicável. |
Recurso de arrastar-e-soltar |
Todas as operações de arrastar-e-soltar funcionam da maneira habitual. Isso inclui operações entre controles Windows Forms e WPF . |
Não aplicável. |
Consulte também
Conceitos
Demonstra Passo a passo: Hospedagem de um controle Windows Presentation Foundation no Windows Forms
Formulários do Windows e mapeamento de propriedades do WPF