2010-02-19 17 views

Odpowiedz

6

Według mojej wiedzy nie można hostować faktycznego formularza WinForm w WPF.

Jednak dobrą alternatywą jest utworzenie normalnego UserControl w WinForm (jako projekt Windows Forms Control Library), który zawiera wszystkie wymagane funkcje i kontrole podrzędne.

Następnie w projekcie WPF odwołaj się do WindowsFormsIntegration.dll (powinien znajdować się w zakładce .NET w Add References).

Następnie należy także odwołać się do zestawu zawierającego narzędzie WinForms UserControl i na końcu dodać kontener WindowsFormsHost do XAML. Aby uzyskać więcej informacji, patrz useful tutorial autorstwa Sacha Barber.

1

Istnieje artykuł na temat CodeProject, który pokazuje, jak ustawić plik EXE jako kontrolkę na WinFormach (Jest to aplikacja, która używa stron Tab, przeciągnij na nią Winform.exe, tworzy stronę z tym oknem) , pochodzi z tego artykułu here. Wiem, że prosiłeś o konkretnie WPF, ale może to doprowadzi cię we właściwym kierunku?

Mam nadzieję, że to pomoże, Pozdrawiam, Tom.

+0

Nie skończyć się z tego, ale to niesamowite narzędzie. Dzięki za link. – jasonk

16

można to zrobić za pomocą następującego kodu:

W swojej XAML:

<WindowsFormsHost name="wfHost" /> 

w kodzie opóźnieniem:

Form foo = new Form(); 
foo.TopLevel = false; 
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
wfHost.Child = foo; 
+1

+1, mało znana "TopLevel". Używany do tego w * .NET Compact 1.1 * w celu powielenia funkcjonalności "podformularza", np. * Microsoft Access *. – AMissico