在WPF中是否有命令从上下文菜单关闭应用程序?也就是说,您可以通过右键单击任何窗口上的标题栏获得相同的上下文菜单?如何从上下文菜单关闭WPF应用程序?
有大量的标准命令,但我很努力地找到一个退出命令。
在WPF中是否有命令从上下文菜单关闭应用程序?也就是说,您可以通过右键单击任何窗口上的标题栏获得相同的上下文菜单?如何从上下文菜单关闭WPF应用程序?
有大量的标准命令,但我很努力地找到一个退出命令。
不幸的是,这并不存在。您必须执行自定义命令并致电
Application.Current.Shutdown();
有一个ApplicationCommands.Close,但没有ApplicationCommands.Exit。
请参阅this thread(例如)查找替代方法(例如创建自定义命令)。
您的问题已解决。但下面的代码可以帮助其他人。
Environment.Exit(0)
我认为应该使用Application.Current.Shutdown来代替。 IIRC,Env.Exit是一个相当苛刻的行动,可以直接杀死这个过程。但我可能是明显错误的。不幸的是,我没有反光板来验证它。 – quetzalcoatl 2011-12-09 20:55:49
是的Environment.Exit(0)是关闭你的应用程序非常残酷的方式。它释放应用程序的所有资源并返回到操作系统环境。 – Towhid 2011-12-10 05:32:43
不是说复杂其实(但仍,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"/>
干杯! (你无法想象我需要多长时间才能发现这个命令的东西......)
小技巧resharper告诉我:'MyCommands'类的竞争体:'public static ICommand ApplicationCloseCommand {get; } = new ApplicationCloseCommand();' – 2016-04-04 23:43:39
@OlleKelderman是的。这是C#版本6语法。那个答案早于它。 :) – NoOne 2016-04-05 18:23:44
我知道,仍然有用的任何人在这里搜索引擎:) – 2016-04-05 18:47:38
这可能是Application.Current.Shutdown();作为Application.Current.Exit();是一个事件。 – Vitalij 2010-10-07 13:56:02
没错,谢谢。 – Jeremy 2011-06-24 15:04:31