C# 如何在wpf中从页面返回主窗口?
在我正在开发的C#应用程序中,我的主窗口上有一个框架C# 如何在wpf中从页面返回主窗口?,c#,wpf,xaml,C#,Wpf,Xaml,在我正在开发的C#应用程序中,我的主窗口上有一个框架 <Frame x:Name="frame" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" NavigationUIVisibility="Hidden"/> 我想做的是,如果我单击帧中包含的相机页面上的按钮,那么它只会在保持主窗口完整的情况下退出页面 我试过这样的东西 NavigationService.GoBack() 但是我得到了一个错误: System.InvalidOpera
<Frame x:Name="frame" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" NavigationUIVisibility="Hidden"/>
我想做的是,如果我单击帧中包含的相机页面上的按钮,那么它只会在保持主窗口完整的情况下退出页面
我试过这样的东西
NavigationService.GoBack()代码>
但是我得到了一个错误:
System.InvalidOperationException:'无法导航,因为日志的后堆栈中没有条目。'
我相信发生这个错误是因为我用来浏览页面的导航堆栈是主窗口代码的一部分,而不是我导航到的页面
因此,我的问题是,如何在不关闭整个应用程序的情况下,关闭包含在页面中的按钮的框架中的页面?如果您想再次以空的框架
结束,您所要做的就是清除框架
的内容。根据,您可以这样做:
frame.Content = null;
这会让你回到事情是如何开始的,现在你只需要触发它。关于这一点,我会让你参考这个问题。这里的答案向您展示了如何使用DelegateCommand
(也称为RelayCommand
)来完成此任务。我会这样做,因为它保持了页面
的美观,并且与托管它的窗口
分开
从技术上讲,您还可以在初始化页面时,向其传递对框架的引用,然后将其设置为frame.Content=null代码>那样。但这是一种“快速而肮脏”的方法,并不是一种真正的最佳实践。你点击的初始按钮是在框架内部还是外部?我按下的初始按钮在框架外部,但我也将其包含在堆栈面板中,这是我在问题中忘记提到的。好的,在点击按钮之前,框架中是否还有其他内容,或者它是空的?或者它是隐藏的?框架通常是空的,直到我使用上面发布的代码用新页面填充为止。@AaronJones:您是否尝试将Window.GetWindow(此)作为主窗口)?.frame.NavigationService.GoBack()
?CanGoBack
属性返回什么?
frame.Content = null;