当前位置:  开发笔记 > 前端 > 正文

这是没有默认退出按钮关闭棱镜应用程序的正确方法吗?

如何解决《这是没有默认退出按钮关闭棱镜应用程序的正确方法吗?》经验,为你挑选了1个好方法。

应用程序的窗口没有边框,所以右边没有退出按钮?如何以正确的方式关闭它?

这是我的方式,fisrt将命令绑定到自定义退出按钮.

单击按钮时在ViewModel中抛出异常.

class ViewModel:NotificationObject
{
    public ViewModel()
    {
        this.ExitCommand = new DelegateCommand(new Action(this.ExecuteExitCommand));
    }

    public DelegateCommand ExitCommand { get; set; }

    public void ExecuteExitCommand()
    {
        throw new ApplicationException("shutdown");
    }
}

在Application类中捕获异常

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        Bootstrapper bootstrapper = new Bootstrapper();
        AppDomain.CurrentDomain.UnhandledException += AppDomainUnhandledException;
        try
        {
            bootstrapper.Run();
        }
        catch (Exception ex)
        {
            HandleException(ex);
        }
    }

    private static void AppDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        HandleException(e.ExceptionObject as Exception);
    }

    private static void HandleException(Exception ex)
    {
        if (ex == null)
            return;
        Environment.Exit(1);
    }
}

Viv.. 6

只是可以使用Application.Current.Shutdown()

public void ExecuteExitCommand()
{
    Application.Current.Shutdown();
}

使用Exception作为通信机制似乎很奇怪.

如果您不想因任何原因在VM中调用ShutDown(),请使用Messenger(在Prism中EventAggregator)发送自定义消息,您可以从Application Class或MainWindow的代码隐藏中订阅它并调用它Application.Current.Shutdown()



1> Viv..:

只是可以使用Application.Current.Shutdown()

public void ExecuteExitCommand()
{
    Application.Current.Shutdown();
}

使用Exception作为通信机制似乎很奇怪.

如果您不想因任何原因在VM中调用ShutDown(),请使用Messenger(在Prism中EventAggregator)发送自定义消息,您可以从Application Class或MainWindow的代码隐藏中订阅它并调用它Application.Current.Shutdown()

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有