我正在将WPF XBAP应用转换为WPF桌面应用。我让它在桌面上运行,但我现在正在尝试将页面引用更改为Window引用。
'MyApp.StartForm' root element is not valid for navigation.
我已经尝试创建此应用程序的简单版本并对其进行转换,这样可以正常工作,因此在使用Window标记时,XAML中必定存在导致此问题的内容。我的问题涉及我如何调查这一点。目前,我得到的只是这个错误,伴随着“无源可用”屏幕;没有显示堆栈位置,“Show Disassembly”不起作用。除了系统地评论XAML的各个块直到它工作,有没有办法解决这个问题是什么?
答案 0 :(得分:6)
WPF应用程序中的导航只能在页面之间完成。错误显示是因为您正在尝试“导航”到现在的窗口,这是不可能的。
不是将您的页面转换为窗口,而是创建一个带有Frame
控件的新窗口。 Frame
可以用来托管您现有的页面 - 这些页面应保持原样,不能更改为Windows。
答案 1 :(得分:6)
关于无法在框架中托管窗口并不完全准确,以下代码将为您执行此操作
public void HostWindowInFrame(Frame fraContainer, Window win) {
object tmp = win.Content;
win.Content = null;
fraContainer.Content = new ContentControl() { Content = tmp };
}
答案 2 :(得分:0)
请检查将页面作为根元素或其他其他内容的StartForm。我也一样。我检查了必须导航的页面。我将该页面声明为窗口。