【问题标题】:in WPF, returning back to MainWindow after setting the content elsewhere在 WPF 中,在其他地方设置内容后返回 MainWindow
【发布时间】:2011-07-28 16:09:12
【问题描述】:

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

但是你不能在 WPF 中这样做,所以我将主页的内容设置为创建的对象的内容。

这一切都很好,但是当我想关闭新打开的页面时,我不能。我显然不能做这样的事情。关闭。而且我没有参考MainWindow,所以我不能重新设置内容?

请帮忙,我很困惑!

更多详情...

抱歉,这不是最明确的问题。 在我的主窗口中,我有

Page1 mainMenu = new Page1();

this.Content = mainMenu;

这会打开我的新页面,就像一个新窗口一样,但实际上并没有加载一个新窗口,这真的很棒!

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

在第一页,如何将内容返回到 MainWindow?我已经尝试了很多基本上都会出错的事情-

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

【问题讨论】:

  • 不清楚您到底要做什么 - 也许如果您发布了一些代码(或伪代码)来说明如何在 Windows 窗体中执行此操作,有人可以帮助您做同样的事情WPF 中的东西。

标签: c# wpf mainwindow


【解决方案1】:

“本质上,就像在 Windows 窗体中一样,我创建了一个页面的新对象,然后显示它。但是你不能在 WPF 中这样做,所以相反......”该声明/问题含糊不清。你知道你可以在 NavigationWindow 中打开页面吗?

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

【讨论】:

    【解决方案2】:

    Page 通常用于 Frame 或 NavigationWindow。在那里,您可以在页面之间导航。

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

    IMO 您正在混合不同的 UI 技术。如果您想制作类似浏览器的应用程序,请查看NavigationWindowFrame 类。否则,可能最好不要使用页面对象,而是使用用户控件。也许this 链接会对你有所帮助。

    【讨论】:

    • 是的。在这种情况下是页面对象,所以没有像我预期的那样的 Close() 方法
    • 另外,“App.Current.MainWindow”给出了我在问题编辑中陈述的错误
    • @MichaelMcCabe:您可以使用 Window.GetWindow(yourPageInstance) 获取 Page 对象的 Window。也许这对你有帮助?
    • @MichaelMcCabe:我已经改变了我的答案。我希望这会有所帮助。
    【解决方案3】:

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

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

    或者,您可以尝试将主要内容和页面内容都放在 MainWindow...中的单独面板中,而不是替换主窗口的内容,然后将每个面板的可见性切换为显示/隐藏所需的内容。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-21
        • 2013-03-04
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        相关资源
        最近更新 更多