【问题标题】:How do you shutdown a WPF app when the "X" button is clicked单击“X”按钮时如何关闭 WPF 应用程序
【发布时间】:2013-07-15 13:35:15
【问题描述】:

我是 WPF 的新手,并注意到在我单击“X”按钮退出窗口后,我的应用程序仍在运行。我以前编写过 GUI,所以我知道这很常见。然而,当我研究这个问题时,我发现的任何解决方案似乎都没有任何意义。

我找到了这个Applicaton.ShutdownMode 解决方案,但似乎我没有正确实施它。我希望我的应用程序关闭“OnMainWindowClose”。 This 是一个与我的问题几乎相同的问题,我认为在接受的答案中解释得不够清楚。

按照Application.ShutdownMode 解决方案,我的 MainWindow.xaml 文件中有这个:

<Window x:Class="CartToolsPrototype1.Window1" Background="White"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        ResizeMode="CanMinimize"
    Title="{DynamicResource CartTools}" Height="802" Width="950" WindowStartupLocation="CenterScreen" >
    <Window.Resources>

        <Application
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            StartupUri="Window1.xaml"
            ShutdownMode="OnMainWindowClose"
            >
            </Application>

编译器给我一个错误,说“添加到 IDictionary 的所有对象都必须具有 Key 属性或与之关联的其他类型的键。”我到底做错了什么,如何正确实现我的关机功能?

谢谢。

【问题讨论】:

  • 这很可能不是 WPF 特定的问题。我的猜测是您启动了一个线程,当您尝试关闭应用程序时,它既没有标记为背景也没有完成。
  • 我不能只删除 wpf 标签而不是开始一个全新的线程吗?
  • 您确定问题不在于我的 ShutdownMode 编码不正确吗?在我的 App.xaml 文件中,我有 ShutdownMode="OneMainWindowClose",但是当我单击“x”时,程序会在后台继续运行
  • 我找到了。谢谢。

标签: c#-4.0 application-shutdown


【解决方案1】:

您不会将Application 标签放入您的Window。在您的解决方案中,您应该将 app.xaml 放在哪里:

ShutdownMode="OnMainWindowClose"

并引用MSDN:

MainWindow 自动设置为引用要在 AppDomain 中实例化的第一个 Window 对象。

【讨论】:

  • 噢噢,好吧。灯泡...我把它放在那个文件中,但我的 Window1 不能设置为“主窗口”,因为当我关闭主窗口时 x 按钮不会关闭应用程序。
  • app.xaml 中的 StartupUri 是什么。是你的MainWindow吗?
  • StartupUri 是“Window1.xaml”
  • 我的解决方案只是告诉您如何更改ShutdownMode 并处理您遇到的编译错误,但是正如@GarryVass 建议的那样,您的应用程序应该以任何方式关闭默认设置,我建议这样做再进行一些调试,看看是否有任何东西阻止关机。
  • 我将此标记为我的答案,因为从技术上讲它确实解决了我的编译器错误,但我确实在调试过程中发现了一个阻止关机的错误。
猜你喜欢
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多