Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在wpf中从页面返回主窗口?_C#_Wpf_Xaml - Fatal编程技术网

C# 如何在wpf中从页面返回主窗口?

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

在我正在开发的C#应用程序中,我的主窗口上有一个框架

<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;