Geeks With Blogs


What I do:

Identity Mine

MVVM Light


What I am:

Microsoft Most Valuable Professional, Client Application Development

Microsoft Certified Technology Specialist, Windows Presentation Foundation

WPF disciples


View my profile on LinkedIn

Creative Commons License
Diary of a Code Trotter by Laurent Bugnion is licensed under a Creative Commons Attribution 3.0 Unported License

All source code on this blog is licensed under the MIT license.

Copyright (c) 2006 - 2011 GalaSoft Laurent Bugnion

Laurent Bugnion (GalaSoft) Diary of a Code Trotter
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 );
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).
System.Windows.Markup.XamlParseException: Cannot create instance of 'Page1' defined in assembly 'WpfTests.TestCrossbow, Version=1.0.2454.24456, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Security.SecurityException: That assembly does not allow partially trusted callers.

at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at WpfTests.TestCrossbow.Page1..ctor()

The action that failed was:

The assembly or AppDomain that failed was:
WpfTests.TestCrossbow, Version=1.0.2454.24456, Culture=neutral, PublicKeyToken=null

The Zone of the assembly that failed was:

The Url of the assembly that failed was:
file:///D:/Work_active/GMS/WpfTests.TestCrossbow/_current/WpfTests.TestCrossbow/bin/XBAP Debug/WpfTests.TestCrossbow.EXE
Security exception when running Crossbow in an XBAP
Posted on Wednesday, September 20, 2006 3:48 PM Technical stuff , .NET , WPF | Back to top

Comments on this post: Crossbow: Integrating Windows Forms controls in XBAP applications fails

# re: Crossbow: Integrating Windows Forms controls in XBAP applications fails
Requesting Gravatar...

I want to create appdomain in XBAP application. But it is not working though i have make it as full trusted application from security option.

Same code is running in windows application without any error but in xbap application it is giving errror like could not load file or assemby..

Left by Thakkar Pratik on Sep 12, 2007 12:08 AM

Comments have been closed on this topic.
Copyright © Laurent Bugnion | Powered by: