Navigation Guard на PhoneCallTask, когда пользователь нажимает «не звонить» - PullRequest
1 голос
/ 02 марта 2012

Я защищаю свои вызовы от телефонных звонков с помощью була, чтобы остановить двойное нажатие. Мой код выглядит примерно так:

public bool InNavigation { get; set; }

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    InNavigation = false;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (!InNavigation)
    {
        PhoneCallTask task = new PhoneCallTask()
        {
            DisplayName = "TEst",
            PhoneNumber = "1234567890"
        };
        InNavigation = true;
        task.Show();
    }
}

Сегодня я заметил, что если пользователь нажимает кнопку «Не звонить» во всплывающем окне MessageBox. Код выше полагается на страницу, которая будет NavigatedFrom и затем в NavigateTo флаг InNavigation сбрасывается Это означает, что если пользователь:

  • Нажмите кнопку "Позвонить" в моем приложении.
  • «Не звонить» в блоке задач
  • Затем снова пытается нажать «Позвонить», ничего не произойдет.

Есть ли лучший способ защиты от нескольких кликов?

1 Ответ

2 голосов
/ 03 марта 2012

Да, добавить действие в Диспетчер:

Dispatcher.BeginInvoke(() =>
{
    PhoneCallTask task = new PhoneCallTask()
    {
        DisplayName = "TEst",
        PhoneNumber = "1234567890"
    };
    task.Show();
});

Это предотвратит двойной щелчок, чтобы нарушить навигацию. В общем случае всегда следует использовать Диспетчер для задач, средств запуска и навигации.

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