Crossbow: Integrating Windows Forms controls in XBAP applications fails
.NET,
Technical stuff,
WPF
See comments
Crossbow is the technology (code name) allowing to integrate Windows Forms controls into a WPF application. Mainly, it consists of a control named WindowsFormsHost, which is part of the namespace System.Windows.Forms.Integration, and distributed in the assembly WindowsFormsIntegration.dll. This DLL can be found in Visual Studio 2005, and is also part of the WPF SDK, under Program Files\Reference Assemblies\Microsoft\Framework\v3.0 (stand June CTP, I didn't check in August CTP if it's still the same).
Integrating WinForms controls is very easy in code behind:
System.Windows.Forms.Button bnOpenColorDialog
= new System.Windows.Forms.Button();
bnOpenColorDialog.Text = "Open WinForms color dialog";
bnOpenColorDialog.BackColor = System.Drawing.Color.Blue;
bnOpenColorDialog.ForeColor = System.Drawing.Color.White;
WindowsFormsHost oHost
= new WindowsFormsHost();
oHost.Child = bnOpenColorDialog;
Canvas.SetTop( oHost, 80 );
Canvas.SetLeft( oHost, 8 );
this.pnMainCanvas.Children.Add( oHost );
= new System.Windows.Forms.Button();
bnOpenColorDialog.Text = "Open WinForms color dialog";
bnOpenColorDialog.BackColor = System.Drawing.Color.Blue;
bnOpenColorDialog.ForeColor = System.Drawing.Color.White;
WindowsFormsHost oHost
= new WindowsFormsHost();
oHost.Child = bnOpenColorDialog;
Canvas.SetTop( oHost, 80 );
Canvas.SetLeft( oHost, 8 );
this.pnMainCanvas.Children.Add( oHost );
where pnMainCanvas is a WPF Canvas located in my Page.
Unfortunately, Crossbow doesn't work when the WPF application is run as XBAP (browser hosted). A security exception is thrown (see below).
Like many other security exceptions in XBAP (sandbox), it is unclear if this is per design, or if it was by lack of resources (which means it might come in a later version of WPF).