【问题标题】:How to detect window close method with Caliburn Micro如何使用 Caliburn Micro 检测窗口关闭方法
【发布时间】:2019-12-02 07:43:25
【问题描述】:

在使用 Caliburn Micro 时,是否可以检测到窗口是如何关闭的? IE。如果通过TryClose() 或通过窗口右上角的十字关闭它?

基于this post,我找到了一种方法来捕捉关闭,甚至使用下面的代码,但我似乎找不到任何表明关闭是如何启动的属性?

public override void CanClose(Action<bool> callback) 
{
    // Only do this, if closed via the cross in the upper right corner of the window
    callback(false);
}

【问题讨论】:

    标签: c# caliburn.micro


    【解决方案1】:

    我找到了一个解决方法,我认为这很简单。但严格来说,这不是如何检测关闭方法的答案。不过,它可能有用...

    第 1 步: 在视图模型的某处添加一个布尔值(并确保它默认为 false

    public bool IsSubmitted { get; private set; } = false;
    

    第2步:提交时更改布尔值

    public void SubmitForm() 
    {
        IsSubmitted = true; // This is the only place this property will be changed
        // ...maybe do some more stuff?
        TryClose();
    }
    

    第 3 步:覆盖 CanClose() 方法,也在视图模型中

    public override void CanClose(Action<bool> callback) 
    {
        if (IsSubmitted == false) 
        {
            callback(false); // Cancels the close
        }
    }
    

    您也可以在关闭后使用IsSubmitted,这就是我将其公开的原因。如前所述,这不会直接检测关闭方法,但它确实允许我检测表单是否被主动提交,这足以满足我的需求。

    如果有更好的方法,我仍然希望看到其他答案:-)

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多