Colocar o controle do WPF em um formulário do Windows Forms

Como você coloca um controle WPF em um formulário do Windows Forms? Provavelmente vou inserir meu controle do WPF em um Windows.Forms.Panel.

Coloque um controle ElementHost dentro do painel. Este controle, em seguida, pode hospedar um elemento do WPF. Do designer do WinForms, você pode encontrar esse controle em ‘Interoperabilidade do WPF’.

Por exemplo, consulte Passo a passo: Hospedando um controle composto WPF no Windows Forms .

Tente ler isto:
Hospedando um controle WPF em um aplicativo do Windows Forms
http://community.infragistics.com/wpf/articles/hosting-a-wpf-control-in-a-windows-forms-application.aspx

Primeiro, adicione referências aos namespaces do WPF (PresentationCore, PresentationFramework, UIAutomationProvider, UIAutomationTypes e WindowsBase). Em seguida, crie uma instância do controle ElementHost e o controle que você deseja incorporar no aplicativo Windows Forms e, em seguida, conecte esse controle ao controle ElementHost. Em seguida, basta adicionar o controle ElementHost à sua coleção de controle de formulários:

  ElementHost host = new ElementHost(); System.Windows.Controls.ListBox wpfListBox = new System.Windows.Controls.ListBox(); for (int i = 0; i < 10; i++) { wpfListBox.Items.Add("Item " + i.ToString()); } host.Dock = DockStyle.Fill; host.Controls.Add(wpfListBox); this.panel1.Controls.Add(host); 

No entanto, se você deseja usar XAML para descrever o controle WPF que você deseja usar no aplicativo Windows Forms, você precisará adicionar um item Avalon UserControl ao seu projeto. Isso criará um arquivo UserControl1.xaml e um arquivo UserControl1.xaml.cs . Você pode modificar o arquivo UserControl1.xaml para conter o XAML que deseja descrever seu controle. Então você simplesmente criaria uma instância desse controle e o adicionaria ao

 ElementHost control as in the above example: ElementHost host = new ElementHost(); UserControl1 uc1 = new UserControl1(); host.Controls.Add(uc1); host.Dock = DockStyle.Fill; this.panel1.Controls.Add(host); 

Além disso, você precisará modificar o arquivo de projeto porque o aplicativo do Windows não tem o que fazer com o arquivo XAML. Você precisará abrir o arquivo do projeto (.csproj, .vbproj, etc.) em um editor como o Bloco de notas e, em seguida, ir até o final. Você verá a seguinte linha:

  

Você precisará copiar esta linha e colá-la logo abaixo da linha acima e então mudar "CSharp" para "WinFX" para que as duas linhas se pareçam com:

   

Agora salve este arquivo e recarregue o projeto usando o VS e execute o aplicativo.

Fonte: http://windowsclient.net/learn/integration.aspx

resumindo as respostas acima para referência rápida:

Se você não quer mexer com a edição do projeto e quer ficar com o designer:

Certifique-se de adicionar referência para WindowsFormsIntegration.dll que normalmente é assemblies \ microsoft \ Framework janela de referência \ …

e se você estiver usando um usercontrol wpf em sua solução, provavelmente você já tem referências a

System.Windows.Presentation, System.Windows.Activities, System.Windows.CompnentModel, System.Windows..RunTime, System.Windows.WorkFlowServices, System.Xaml.

caso contrário, certifique-se de adicionar as referências necessárias.

em um membro do formulário do windows, você adiciona o wpf usercontrol myWpfUsrCtl ao formulário do windows da seguinte forma

 void addWpfUsrCntl() { System.Windows.Forms.Integration.ElementHost elemthost1 = new System.Windows.Forms.Integration.ElementHost(); elemthost1.Dock = DockStyle.None; // change to to suit your need elemthost1.Parent = this; //elemthost1.AutoSize = true; // change to to suit your need FinCurl_.AutoSize = true; // change to to suit your need elemthost1.Child = myWpfUsrCtl; // and of course , you can add to a control to the form instead. // by "this" to the the desired control 

}