ContentDialog исчезает при нажатии Escape - PullRequest
0 голосов
/ 12 ноября 2018

Итак, я использую: 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(); диалог не скрывается.Я также не могу отменить диалог, поэтому он остается там до перезапуска приложения.

1 Ответ

0 голосов
/ 12 ноября 2018

Я бы создал новый логический флаг, который будет указывать, если синхронизация все еще выполняется, и пользовательский метод, который пометит его как 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 после завершения синхронизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...