Hosting a WPF Control in Windows Forms
Hosting a WPF control in Windows Forms is much the same as hosting
a Windows Forms Control
in WPF: we
need a host. In WPF, we needed a host that was an element that could fit
into WPF, but that also provided an HWND for use by the Windows Forms
control. In Windows Forms, we need a Windows Forms Control
-derived class so that it can fit into
a container's Controls
collection.
For that, we have the ElementHost
class, also from the System.Windows.Forms.Integration
namespace and
the WindowsFormsIntegration
assembly.
The ElementHost
class derives
from ContainerControl
to enable
hosting other Windows Forms controls. The element host knows about
HWNDs, how to size and paint itself, and how to handle keystrokes and
focus. As an example, let's say we've got a form all laid out in the
Windows Forms Designer, as shown in Figure B-5.
Figure B-5. A Windows Forms form with space for a WPF button
In Figure B-5, we've got a form with two group boxes: one with a Windows Forms button laid out on the left using the Windows Forms Designer and one blank on the right, all ready for a WPF button to be added at runtime, which is what the code in Example B-5 does.
Example B-5. Creating a WPF button in a Windows Forms application
// Form1.cs ... using System.Windows.Forms.Integration; public partial class Form1 : Form { public Form1( ) { InitializeComponent( ); // group boxes ...
Get Programming WPF, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.