所以我正在使用: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();
之后,对话框不会隐藏。我也无法取消对话框,因此该对话框会一直存在,直到我重新启动应用程序为止。
答案 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时,对话框仅关闭。键。