在下面的代码中,您可以看到发生抖动事件时用于调用页面的代码。但是,页面会弹出,但同时应用程序冻结,而我无法进行任何其他用户输入,例如单击按钮。

void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
    //double X, Y, Z;
    if (e.X > 1.5)
    {
        Dispatcher.BeginInvoke( () => {
            NavigationService.Navigate(new Uri("/Bars/DetailBar.xaml", UriKind.Relative));
        } );
    }
}


调试器告诉我,“ NavigationFailed”和一个“ System.NotSupportedException”。怎么了

最佳答案

读数可能发生得太快,并且您正在引起多个导航。尝试退订该事件:

void accelerometer_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
    //double X, Y, Z;
    if (e.X > 1.5)
    {
        accelerometer.ReadingChanged -= accelerometer_ReadingChanged;

        Dispatcher.BeginInvoke( () => {
            NavigationService.Navigate(new Uri("/Bars/DetailBar.xaml", UriKind.Relative));
        });

    }
}

10-07 20:45