我用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标志。这意味着如果用户:
是否有更好的方法可以防止多次点击?
答案 0 :(得分:2)
是的,将操作添加到Dispatcher:
Dispatcher.BeginInvoke(() =>
{
PhoneCallTask task = new PhoneCallTask()
{
DisplayName = "TEst",
PhoneNumber = "1234567890"
};
task.Show();
});
这样可以防止双击导致导航中断。通常,您应始终使用Dispatcher for Tasks,Launchers和Navigation。