在我的 Windows Phone 应用程序中,当我按下按钮导航到 Page1 并且在它完成加载之前,我按下按钮导航到 Page2,我的应用程序崩溃了。是否正确,实施此行为的最佳做法是什么?
更新 一般我认为,对我来说最好的方法是在按下其中一个按钮后阻止屏幕上的所有按钮,并在导航完成后将它们激活,那么我该怎么做呢?
在我的 Windows Phone 应用程序中,当我按下按钮导航到 Page1 并且在它完成加载之前,我按下按钮导航到 Page2,我的应用程序崩溃了。是否正确,实施此行为的最佳做法是什么?
更新 一般我认为,对我来说最好的方法是在按下其中一个按钮后阻止屏幕上的所有按钮,并在导航完成后将它们激活,那么我该怎么做呢?
最佳做法是在第一次单击后禁用 Click 事件。如果您的按钮名为 b 并且您在 xaml 或代码隐藏中分配了事件处理程序,例如
b.Click += new RoutedEventHandler(ButtonOnClick);
void ButtonOnClick(object sender, RoutedEventArgs e)
{
b.Click -= new RoutedEventHandler(ButtonOnClick);
// Navigate away now.
}
实际上,我的示例只会停止双击当前按钮,但您也可以禁用其他按钮。
在我的一个应用程序中,我维护一个列表,我对其进行迭代和显示/隐藏,启用/禁用所需的。您所做的就是迭代并设置正确的属性。
foreach(var button in myButtons)
button.IsEnabled = false;
将调用包装NavigationService.Navigate(Page2Uri)
成Dispatcher.BeginInvoke(()=> {...} );
如下:
Dispatcher.BeginInvoke (()=> { NavigationService.Navigate(Page2Uri) });