Поместите элемент управления WPF в форму Windows Forms

Как вы помещаете элемент управления WPF в форму Windows Forms? Скорее всего, я буду вставлять свой WPF-элемент в Windows.Forms.Panel.

Поместите элемент управления ElementHost внутри панели. Затем этот элемент управления может содержать элемент WPF. Из конструктора WinForms вы можете найти этот элемент управления в разделе «WPF Interoperability».

Например, см. Пошаговое руководство. Хостинг WPF Composite Control в Windows Forms .

Попытайтесь прочитать это:
Хостинг WPF-элемента управления в приложении Windows Forms
http://community.infragistics.com/wpf/articles/hosting-a-wpf-control-in-a-windows-forms-application.aspx

Сначала добавьте ссылки на пространства имен WPF (PresentationCore, PresentationFramework, UIAutomationProvider, UIAutomationTypes и WindowsBase). Затем создайте экземпляр элемента управления ElementHost и элемент управления, который вы хотите встроить в приложение Windows Forms, а затем подключите этот элемент управления до элемента управления ElementHost. Затем просто добавьте элемент управления ElementHost в коллекцию управления Forms:

  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); 

Однако, если вы хотите использовать XAML для описания элемента управления WPF, который вы хотите использовать в приложении Windows Forms, вам нужно добавить элемент Avalon UserControl в свой проект. Это создаст файл UserControl1.xaml.cs файл UserControl1.xaml.cs . Затем вы можете изменить файл UserControl1.xaml, чтобы указать любой XAML, который вы хотите описать вашим элементом управления. Затем вы просто создадите экземпляр этого элемента управления и добавите его в

 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); 

Кроме того, вам нужно будет изменить файл проекта, потому что приложение Windows не имеет никакого отношения к файлу XAML. Вам нужно будет открыть файл проекта (.csproj, .vbproj и т. Д.) В редакторе, таком как «Блокнот», а затем прокрутите вниз. Вы увидите следующую строку:

  

Вам нужно будет скопировать эту строку и вставить ее чуть ниже указанной строки, а затем изменить «CSharp» на «WinFX», чтобы две строки выглядели так:

   

Теперь сохраните этот файл и перезагрузите проект с помощью VS и запустите приложение.

Источник: http://windowsclient.net/learn/integration.aspx

обобщая приведенные выше ответы для быстрой справки:

если вы не хотите вмешиваться в редактирование проекта и хотите придерживаться дизайнера:

не забудьте добавить ссылку для WindowsFormsIntegration.dll, которая, как правило, из сборки \ reference \ microsoft \ Framework …

и если вы используете пользовательское управление wpf в своем решении, вы, вероятно, уже получили ссылки на

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

в противном случае обязательно добавьте требуемые исходящие ссылки.

в члене формы Windows вы добавляете wpf usercontrol myWpfUsrCtl в форму windows следующим образом

 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 

}

  • Удалить файл, используемый другим процессом
  • databind свойство Source для WebBrowser в WPF
  • Как перебрать строки инструментария WPF Datagrid
  • WPF: установка ширины (и высоты) в процентах
  • Модель Mvvm ViewModel
  • Почему MVVM и каковы основные преимущества?
  • Как отключить эффекты MouseOver для кнопки в WPF?
  • BitmapImage в WPF блокирует файл
  • Получить активный цвет автоматической цветовой темы Windows 8
  • Создание приложений WPF выглядит в стиле Metro, даже в Windows 7? (Окон Хром / Темы / Тема)
  • Установите надстрочный индекс и индекс в форматированном тексте в wpf
  • Давайте будем гением компьютера.