Основной проблемой будет возможность создания экземпляра окна Windows Forms и присвоение его владельцу окна WPF. Winforms будет хотеть IWin32Window, который не окно WPF. Чтобы обойти это, вам нужно создать собственный класс.
Я нашел этот код в блоге Марка Рендла (я скопировал его здесь, поскольку мне пришлось использовать кэш Google для доступа к странице).
ССЫЛКА - ВНИМАНИЕ: Может не работать
class Shim : IWin32Window
{
public Shim(System.Windows.Window owner)
{
// Create a WindowInteropHelper for the WPF Window
interopHelper = new WindowInteropHelper(owner);
}
private WindowInteropHelper interopHelper;
#region IWin32Window Members
public IntPtr Handle
{
get
{
// Return the surrogate handle
return interopHelper.Handle;
}
}
#endregion
}
и способ его использования:
namespace System.Windows.Forms
{
public static class WPFInteropExtensions
{
public static DialogResult ShowDialog(
this System.Windows.Forms.Form form,
System.Windows.Window owner)
{
Shim shim = new Shim(owner);
return form.ShowDialog(shim);
}
}
}
Я не тестировал этот код, но, читая в Интернете, кажется, что вы можете разместить окна Winforms внутри приложения WPF.
Я только что нашел эту ссылку на MSDN, в которой очень подробно описано, как взаимодействовать с элементом управления / окном Win32 в приложении WPF.
Надеюсь, это поможет вам.