tags:

views:

1090

answers:

2

I have a working WPF application. I would like to see it running as an xbap. What do I need to change in my WPF app to make it run as an xbap?

+2  A: 

When it comes to what you can do graphically, the only difference between the two is that XBAP can't use BitmapEffects. Other than that, the sandbox security issues are pretty much the only things you need to deal with. Most pure WPF programs should transition smoothly.

Check out this comparison of the differences between WPF and XBAP.

Here's a tutorial for creating an XBAP application.

Based on that there's a fairly simple refactor you can do to accommodate both WPF and XBAP for your program.

  • First, move all of your WPF code into a .dll project separate from the core WPF EXE project. Reference this project in your core WPF EXE project.
  • Modify the EXE project's App.xaml to point to your main page from your .dll project.
  • Create a new XBAP project.
  • Reference the dll project mentioned above in your XBAP project
  • Modify the XBAP project's App.xaml to point to the main page from your .dll
  • Publish and run.
Randolpho
Thanks Randolpho, this is great, but I get an error when I try to use a "Window" instead of "Page" in xbap. Does it mean I cannot use any Window object in xbap?
Gustavo Cavalcanti
Unfortunately, that's one of the restrictions -- no modal windows in XBAP.
Randolpho
@Randolpho : AFAIK you can use modal windows in XBAP but they are called "child windows".
Andrei Rinea
A: 

Yes, we can use Windows in XBAP. But the first object must be a Page, because the Page will be displayed on the browser. You can put a button on the page and open your window from it.

Tony