按Escape键时ContentDialog消失

时间:2018-11-12 13:41:27

标签: c# uwp dialog

所以我正在使用:public sealed partial class SynchronizationDialog : ContentDialog

我有一个UWP应用。当我在UWP应用中按下按钮时,SynchronizationDialog打开,该应用开始下载文档。在对话框中可以看到进度。

下载完成后,使用this.Hide();

对话框“关闭”

现在,我的问题是,当我按下Escape键时,对话框消失了。但是下载仍在进行,一切正常。

如何防止对话框消失?我尝试过:

public SynchronizationDialog()
{
    this.InitializeComponent();
    this.Loaded += SynchronizationDialog_Loaded;

    this.Closing += ContentDialog_Closing; //this is what I tried
}

//....

void ContentDialog_Closing(ContentDialog sender, ContentDialogClosingEventArgs args)
{
    bool doNotClose = true;
    if (doNotClose)
    {
        args.Cancel = true;
    }
}

对话框不会以这种方式消失。但是在下载完成并且发生this.Hide();之后,对话框不会隐藏。我也无法取消对话框,因此该对话框会一直存在,直到我重新启动应用程序为止。

2 个答案:

答案 0 :(得分:2)

我将创建一个新的布尔值标志,以指示是否仍在进行同步,以及一个自定义方法将其标记为false,然后继续进行Hide

private bool _workInProgress = true;

public void FinishWork()
{
   _workInProgress = false;
   this.Hide();
}

现在,Closing事件处理程序将更新为以下内容:

void ContentDialog_Closing(ContentDialog sender, ContentDialogClosingEventArgs args)
{
    args.Cancel = _workInProgress;     
}

现在,同步完成后,请使用Hide方法来代替FinishWork

答案 1 :(得分:0)

使用AppBarButton而不是Button来解决esc。异常错误问题。 按下esc时,对话框仅关闭。键。