【问题标题】:How to close/hide app main window?如何关闭/隐藏应用程序主窗口?
【发布时间】:2020-06-26 20:39:47
【问题描述】:

我有一个有主窗口和辅助窗口的应用程序。

在某些情况下,我只想在用户启动应用时显示辅助窗口。

问题是应用程序的主窗口是自动启动的,所以在以编程方式打开辅助窗口后,我只剩下主窗口和辅助窗口。

有什么办法可以隐藏主窗口吗? (即模拟用户按下主窗口右上角的“关闭按钮”?)

【问题讨论】:

  • 不能只在主窗口中显示辅助窗口的内容吗?
  • 是的,我可以。我宁愿不这样做,因为用户以后应该能够显式打开主窗口,在这种情况下,我必须将辅助窗口内容从主视图转移到新的辅助视图。如果我不知道如何隐藏主窗口,我可能最终会这样做:)
  • 为什么要转移?您可以只显示另一个窗口(辅助窗口)并将其称为主窗口。 :D 还是因为其他原因这不可能?
  • 嗯,这可以正常工作:P 现在主窗口加载MainPage.xaml,辅助窗口加载SecondaryPage.xaml,但我想我可以将其抽象出来,而不区分主窗口和辅助窗口。
  • @MarianDolinský 所以我最终还是采纳了你的建议:P 我在主窗口中显示了我想要的内容。后来,当用户想要主窗口内容时,我创建了一个辅助窗口并在那里显示主要内容。如果您在答案中放弃您的内容,我会接受它:)

标签: uwp


【解决方案1】:

创建辅助视图后,我切换到这个新视图,指定 fromViewId 作为主视图 ID,并使用 ApplicationViewSwitchingOptions.ConsolidateViews 选项隐藏它:

// Create seprate secondary window
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(secondaryWindowViewId);

// Switch to secondary window just created, which hides the main view
await ApplicationViewSwitcher.SwitchAsync(
    secondaryWindowViewId, 
    mainWindowViewId, 
    ApplicationViewSwitchingOptions.ConsolidateViews);

不是最优雅的解决方案,但它有效 :) 欢迎使用更优雅的解决方案!

【讨论】:

    【解决方案2】:

    为什么要关闭/隐藏主窗口?您可以在主窗口(应用程序启动时创建)中显示辅助窗口的内容,如果用户想要显示主窗口,您可以在辅助窗口中显示其内容。

    【讨论】:

      【解决方案3】:

      在主窗口中执行ApplicationView.GetForCurrentView().TryConsolidateAsync() 以正确关闭它,就像您通过单击标题栏中的关闭按钮关闭它一样。这比Application.Exit() 更受欢迎,因为此方法会暂停应用程序,而Application.Exit() 会突然关闭应用程序。与Application.Exit() 不同,通过这种方法关闭应用程序也会记住您的应用程序以前的位置和大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-21
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多