当用户点击“电话呼叫任务上的导航保护”时;不要打电话;

本文关键字:保护 导航 打电话 用户 电话 任务 呼叫 | 更新日期: 2023-09-27 18:26:32

我用bool阻止双击来保护我对电话呼叫taks的呼叫。我的代码看起来像:

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弹出窗口上的"不要呼叫"。上面的代码依赖于要从中导航的页面,然后在NavigateTo中重置InNavigation标志。这意味着如果用户:

  • 单击我的应用程序中的"呼叫"按钮
  • 任务MessageBox上的"不调用"
  • 然后尝试再次单击"呼叫",将不会发生任何事情

有没有更好的方法来防止多次点击?

当用户点击“电话呼叫任务上的导航保护”时;不要打电话;

是,将操作添加到Dispatcher:

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

这将防止双击破坏导航。通常,您应该始终将Dispatcher用于任务、启动器和导航。