Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF root element is not valid for navigation

Tags:

wpf

I am converting a WPF XBAP app to a WPF desktop app. I have it running on the desktop, but am now trying to change the Page references to Window references.

'MyApp.StartForm' root element is not valid for navigation.

I have tried creating a simple version of this app and converting that, and this works fine, so there must be something within the XAML that is causing this when using Window tags. My question relates to how I can investigate this. Currently, all I get is this error, accompanied by a "No Source Available" screen; no stack locations are shown and "Show Disassembly" doesn't work. Other than systematically commenting out individual chunks of XAML until it works, is there a way to work out what this issue is?

like image 448
Paul Michaels Avatar asked Aug 16 '11 12:08

Paul Michaels


2 Answers

Navigation in a WPF application can only be done between pages. The error shows up because you're trying to "navigate" to what is now a Window, and this isn't possible.

Instead of converting your Page into a Window, create a new Window with a Frame control in it. A Frame can be used to host your existing pages - which should stay exactly as they are, and not be changed into Windows.

like image 58
Dan Puzey Avatar answered Nov 17 '22 22:11

Dan Puzey


Its not entirely accurate about it not being possible to host a window in a frame, the following code will do it for you

    public void HostWindowInFrame(Frame fraContainer, Window win) {
        object tmp = win.Content;
        win.Content = null;
        fraContainer.Content = new ContentControl() { Content = tmp };
    }
like image 28
RogerDTaylor Avatar answered Nov 17 '22 22:11

RogerDTaylor