2010-10-05 70 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