当用户点击“不打电话”时,PhoneCallTask​​上的Navigation Guard

时间:2012-03-02 16:23:13

标签: c# windows-phone-7

我用bool保护我拨打电话的电话,以阻止双击。我的代码看起来像:

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

  • 点击我的应用中的“通话”按钮
  • “不要在任务消息框上调用”
  • 然后再次尝试点击“呼叫”,不会发生任何事情。

是否有更好的方法可以防止多次点击?

1 个答案:

答案 0 :(得分:2)

是的,将操作添加到Dispatcher:

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

这样可以防止双击导致导航中断。通常,您应始终使用Dispatcher for Tasks,Launchers和Navigation。