2010-10-05 71 views
7

在WPF中是否有命令从上下文菜单关闭应用程序?也就是说,您可以通过右键单击任何窗口上的标题栏获得相同的上下文菜单?如何从上下文菜单关闭WPF应用程序?

有大量的标准命令,但我很努力地找到一个退出命令

回答

16

不幸的是,这并不存在。您必须执行自定义命令并致电

Application.Current.Shutdown(); 
+3

这可能是Application.Current.Shutdown();作为Application.Current.Exit();是一个事件。 – Vitalij 2010-10-07 13:56:02

+0

没错,谢谢。 – Jeremy 2011-06-24 15:04:31

1

有一个ApplicationCommands.Close,但没有ApplicationCommands.Exit。

请参阅this thread(例如)查找替代方法(例如创建自定义命令)。

1

您的问题已解决。但下面的代码可以帮助其他人。

 
    Environment.Exit(0) 
+0

我认为应该使用Application.Current.Shutdown来代替。 IIRC,Env.Exit是一个相当苛刻的行动,可以直接杀死这个过程。但我可能是明显错误的。不幸的是,我没有反光板来验证它。 – quetzalcoatl 2011-12-09 20:55:49

+0

是的Environment.Exit(0)是关闭你的应用程序非常残酷的方式。它释放应用程序的所有资源并返回到操作系统环境。 – Towhid 2011-12-10 05:32:43

0

不是说复杂其实(但仍,M $吸不提供的话)。这里你去:

public static class MyCommands 
{ 
    private static readonly ICommand appCloseCmd = new ApplicationCloseCommand(); 
    public static ICommand ApplicationCloseCommand 
    { 
     get { return appCloseCmd; } 
    } 
} 

//=================================================================================================== 
public class ApplicationCloseCommand : ICommand 
{ 
    public event EventHandler CanExecuteChanged 
    { 
     // You may not need a body here at all... 
     add { CommandManager.RequerySuggested += value; } 
     remove { CommandManager.RequerySuggested -= value; } 
    } 

    public bool CanExecute(object parameter) 
    { 
     return Application.Current != null && Application.Current.MainWindow != null; 
    } 

    public void Execute(object parameter) 
    { 
     Application.Current.MainWindow.Close(); 
    } 
} 

而事件处理程序的主体可能不是甚至需要。

您可以使用它,像这样:

<MenuItem Header="{DynamicResource MenuFileExit}" Command="MyNamespace:MyCommands.ApplicationCloseCommand"/> 

干杯! (你无法想象我需要多长时间才能发现这个命令的东西......)

+1

小技巧resharper告诉我:'MyCommands'类的竞争体:'public static ICommand ApplicationCloseCommand {get; } = new ApplicationCloseCommand();' – 2016-04-04 23:43:39

+0

@OlleKelderman是的。这是C#版本6语法。那个答案早于它。 :) – NoOne 2016-04-05 18:23:44

+0

我知道,仍然有用的任何人在这里搜索引擎:) – 2016-04-05 18:47:38