Académique Documents
Professionnel Documents
Culture Documents
Glücklich vereint
Interoperabilität zwischen WPF
und Windows Forms
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
ACANDO GROUP
Jörg Neumann
Principal bei der Resco GmbH in Hamburg
Associate bei Thinktecture
Beratung, Schulung, Coaching
Buchautor, Referent
Schwerpunkte:
SQL Server
Client-Technologien
Mail: Joerg.Neumann@Resco.de
Blog: WWW.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com 2
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Warum Interop?
Neuentwicklung sehr aufwändig
Es gibt keinen Upgrade-Wizard!
Die Lernkurve ist sehr steil
Es existiert z.Zt. noch nicht alle Tools
Es existieren noch nicht alle
Komponenten
Interop ist ein Mittelweg
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Warum Interop?
WPF-Technologien in alten Apps nutzen
2D/3D-Grafik
Animationen
Dokumente
Medien (Imaging/Audio/Video)
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Warum Interop?
Windows Forms in WPF nutzen
Komponenten aus Altanwendung weiter
nutzen
Fehlende Komponenten nachrüsten
DataGridView
MaskEditControl
DateTimePicker
PropertyGrid
...
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Möglichkeiten
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Klassenmodell
Win32
HwndHost HwndSource
WF/Win32 WPF in
in WPF WF/Win32
Windows Forms/WPF
WindowsForms
ElementHost
Host
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Namespace/Assembly
Namespace
System.Windows.Forms.Integration
Assembly
WindowsFormsIntegration.dll
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
WPF in Windows Forms nutzen
WPF-Assemblies einbinden
WindowsBase.dll
PresentationCore.dll
PresentationFramework.dll
WindowsFormsIntegration.dll
Properties werden durchgereicht
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Beispiel
System.Windows.Controls.Button wpfButton =
new System.Windows.Controls.Button();
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Windows Forms in WPF nutzen
Windows Forms Assemblies einbinden
System.Windows.Forms.dll
System.Drawing.dll
Kann über Code oder XAML
eingebunden werden
Properties werden durchgereicht
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
ActiveX in WPF nutzen
Gleiche Funktionsweise wie bei
Windows Forms in WPF
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Agenda
Warum Interop?
Möglichkeiten
WPF in Windows Forms nutzen
Windows Forms in WPF nutzen
ActiveX in WPF nutzen
Einschränkungen
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Layout
Pixel kann nur von einer Technologie
gerendert werden!
WM_PAINT wird nur von einem verarbeitet
Problem: Alpha-Blending
(Durchsichtige Objekte, Overlay, ...)
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Layout
WindowsFormsHost
Kann nicht transformiert werden
Erscheint immer im Vordergrund
Muss 100% Opacity haben
Eltern-Element muss 100% Opacity haben
Clipping-Regions der Eltern werden ignoriert
Drag & Drop ist problematisch
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Input Events
WindowsFormsHost gibt folgende Events
nicht an WPF weiter:
Mouse-Events
Keyboard-Events
GotFocus / LostFocus
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Voraussetzungen
Zielrechner Windows XP oder höher
.NET 3.0 Runtime muss installiert sein
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Migrationsvorbereitungen
Separieren Sie Logik und UI
Kapseln Sie die UI in User Controls
Migrieren Sie ggf. Schritt für Schritt und
überbrücken Sie mit Interop
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Resourcen
Introducing Windows Forms - WPF Interoperability
http://blogs.msdn.com/mhendersblog/archive/2005/09/20/471814.aspx
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
Fragen?
Joerg.Neumannn@Thinktecture.com | www.HeadWriteLine.BlogSpot.com
{ In-depth support and consulting for
software architects and developers }
http://www.thinktecture.com/
joerg.neumann@thinktecture.com
http://HeadWriteLine.BlogSpot.com
30