Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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_Mainwindow - Fatal编程技术网

C# 在WPF中,在别处设置内容后返回主窗口

C# 在WPF中,在别处设置内容后返回主窗口,c#,wpf,mainwindow,C#,Wpf,Mainwindow,我不知道为什么我很难找到答案。 本质上,就像在windows窗体中一样,我创建了一个页面的新对象,然后显示它 但是,您不能在WPF中这样做,因此,我将主页的内容设置为已创建对象的内容 这一切都很好,但当我想关闭新打开的页面时,我不能。我显然不能做这样的事。我没有对主窗口的引用,因此无法重新设置内容 请帮忙,我很困惑 更多细节 对不起,这不是最清楚的问题。 在我的主窗口中,我有 Page1 mainMenu = new Page1(); this.Content = mainMenu; 这会打

我不知道为什么我很难找到答案。 本质上,就像在windows窗体中一样,我创建了一个页面的新对象,然后显示它

但是,您不能在WPF中这样做,因此,我将主页的内容设置为已创建对象的内容

这一切都很好,但当我想关闭新打开的页面时,我不能。我显然不能做这样的事。我没有对主窗口的引用,因此无法重新设置内容

请帮忙,我很困惑

更多细节

对不起,这不是最清楚的问题。 在我的主窗口中,我有

Page1 mainMenu = new Page1();

this.Content = mainMenu;
这会打开我的新页面,就像一个新窗口,但实际上没有加载新窗口,这真是太棒了

但是,我的当前页面现在具有第1页的内容。因此,它运行代码并显示第1页的内容

在第一页中,如何将内容返回主窗口?我尝试过很多基本上都会出错的事情-


“遍历树时超出了逻辑树深度。这可能表示树中存在循环。”

页面通常用于框架或导航窗口中。在这里,您可以在页面之间导航

您的代码已替换窗口的内容,并且窗口中没有导航功能。您可以打开一个新窗口并关闭当前窗口,或者将其他内容设置为窗口的内容属性


在我看来,你正在混合不同的UI技术。如果要创建类似浏览器的应用程序,请查看或类。否则,最好不要使用Page对象,而是使用UserControls。也许链接会对您有所帮助。

页面通常用于框架或导航窗口中。在这里,您可以在页面之间导航

您的代码已替换窗口的内容,并且窗口中没有导航功能。您可以打开一个新窗口并关闭当前窗口,或者将其他内容设置为窗口的内容属性

在我看来,你正在混合不同的UI技术。如果要创建类似浏览器的应用程序,请查看或类。否则,最好不要使用Page对象,而是使用UserControls。也许链接会对您有所帮助。

“本质上,就像在windows窗体中一样,我创建了一个页面的新对象,然后将其显示出来。但是,您不能在WPF中这样做,所以取而代之的是……”这句话/问题很模糊。你知道你可以在导航窗口中打开页面吗

    NavigationWindow win = new NavigationWindow();
    win.Content = new pageWFbchAdmin();
    win.Show();
“本质上,就像在windows窗体中一样,我创建了一个页面的新对象,然后将其显示出来。但是你不能在WPF中这样做,所以取而代之的是…”这个陈述/问题很模糊。你知道你可以在导航窗口中打开页面吗

    NavigationWindow win = new NavigationWindow();
    win.Content = new pageWFbchAdmin();
    win.Show();

我可能误解了您的意图,但我想知道您是否真正想要将页面设置为窗口,然后使用Window.ShowDialog方法显示它

这样,它的行为就像一个模态对话框,听起来有点像你在问题开始时所描述的


或者,不替换主窗口的内容,您可以尝试将主内容和页面内容都放在主窗口中…在相互重叠的单独面板中,然后切换每个面板的可见性以显示/隐藏所需内容。

我可能误解了您的意图,但我想知道您真正想要的是将页面变成一个窗口,然后再显示它使用Window.ShowDialog方法创建

这样,它的行为就像一个模态对话框,听起来有点像你在问题开始时所描述的


或者,不替换主窗口的内容,您可以尝试将主内容和页面内容都放在主窗口中…在相互重叠的单独面板中,然后切换每个面板的可见性以显示/隐藏所需内容。

页面可能没有关闭方法,但NavigationWindow有关闭方法。页面是内容(不是可视主机)。

页面可能没有关闭方法,但NavigationWindow有关闭方法。页面是内容(不是可视主机)。

不清楚您到底想做什么-可能是您在Windows窗体中发布了一些代码(或伪代码),有人可以帮助您在WPF中做同样的事情。不清楚您到底想做什么-可能是您发布了一些代码(或伪代码)对于如何在Windows窗体中执行此操作,有人可以帮助您在WPF.Ye中执行相同的操作。在本例中是Page对象,因此没有像我期望的那样的Close()方法。另外,“App.Current.MainWindow”将我在编辑中声明的错误提供给question@MichaelMcCabe:您可以使用Window.GetWindow(yourPageInstance)获取页面对象的窗口。也许这对你有帮助?@MichaelMcCabe:我已经改变了我的答案。我希望这能有所帮助。在本例中是Page对象,因此没有像我期望的那样的Close()方法。另外,“App.Current.MainWindow”将我在编辑中声明的错误提供给question@MichaelMcCabe:您可以使用Window.GetWindow(yourPageInstance)获取页面对象的窗口。也许这对你有帮助?@MichaelMcCabe:我已经改变了我的答案。我希望这有帮助。