2010-10-06 5 views
10

Я хотел бы показать окно WPF из приложения Windows Forms (.NET 3.5).Является ли абсолютно безопасным отображение окна WPF из формы WinForms?

Этот код, кажется, работает без каких-либо проблем в образце проекта:

public partial class WinFormsForm1 : Form 
{ 
    public WinFormsForm1() { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) { 
     WpfWindow1 w = new WpfWindow1(); 
     w.Show(); 
    } 
} 

форма начинается с Main() как обычный Winforms форме:

Application.Run(new WinFormsForm1()); 

Это кажется мне слишком легко будь настоящим. Есть ли недостатки в этом? Это безопасно?

ответ

11

У этого есть один серьезный недостаток: немодальное окно WPF будет not get keyboard input.

EnableModelessKeyboardInterop вызов метода должен быть добавлен перед окном WPF, показано:

WpfWindow1 w = new WpfWindow1(); 
    System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w); 
    w.Show(); 

ElementHost resides in WindowsFormsIntegration.dll.

Дальнейшее чтение: http://msdn.microsoft.com/en-us/library/aa348549.aspx

-3

Это действительно так просто. Я не могу придумать, чтобы какой-либо недостаток делал это так.

7

Итог: это. У нас довольно сложное приложение, объединяющее как WPF, так и winforms: окна, пользовательские элементы управления, модальные диалоги, вы называете это ... и он работает на медицинском рынке. У нас есть некоторые темные углы, один из них - позорный EnableModelessKeyboardInterop, другой - окно WPF, являющееся дочерним элементом окна Winforms, которое вы можете прочитать Here

Смежные вопросы