什么是XAML中的默认结束事件?

时间:2011-07-30 07:06:07

标签: c# wpf

这是C#WPF应用程序。我有Button关闭应用程序。是否存在默认关闭事件,如窗口右上角的(x)按钮。

基本上我希望有一个纯XAML解决方案,如下所示:

<Button CloseWhenClick></Button>

而不是:

<Button Click="CloseWindow_Click"></Button>

private void Close(object sender, RoutedEventArgs e)
{
    Window.Close();
}

[编辑 - 答案]

我在寻找:

<Button Command="Close"></Button>

3 个答案:

答案 0 :(得分:1)

没有像“默认”结束事件这样的概念,但是在WPF中是一个Command概念。将您的继电器命令绑定到该按钮,您就完成了。以下是Q&amp; A的链接:WPF Standard Commands - Where's Exit?

希望这有帮助。

问候。

答案 1 :(得分:0)

试试这个

    public App()
    {
        Exit += new ExitEventHandler(App_Exit);
    }

    void App_Exit(object sender, ExitEventArgs e)
    {
        // TODO : are you sure ?!!
    }

希望这个帮助

答案 2 :(得分: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"/>

干杯!

(你无法想象我自己发现这个命令的时间有多长了......)