当用户点击“电话呼叫任务上的导航保护”时;不要打电话;
本文关键字:保护 导航 打电话 用户 电话 任务 呼叫 | 更新日期: 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用于任务、启动器和导航。