Как закрыть приложение WPF из контекстного меню?

есть команда в WPF закрыть приложение из контекстного меню? То есть то же самое контекстное меню, которое вы получаете, щелкнув правой кнопкой мыши по строке заголовка в любом окне?

есть множество стандартных команд, но я изо всех сил пытаюсь найти выход команда.

4 ответов


к сожалению, этого не существует. Вам нужно будет реализовать пользовательскую команду и вызвать

Application.Current.Shutdown();

существует ApplicationCommands.Близко, но нет ApplicationCommands.Выход.

посмотреть этой теме (например) для поиска альтернатив (например, создание пользовательской команды).


ваша проблема решена. Но следующий код может помочь другим.

     Environment.Exit(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();
    }
}

и тело AplicationCloseCommand.CanExecuteChanged обработчик событий может даже не понадобиться.

вы используете его так:

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

Ура!

(вы не можете себе представить, сколько времени мне потребовалось, чтобы открыть этот командный материал...)