2013-05-09 130 views
1

我在C#中爲Windows phone 7開發創建了一個按鈕。它包含一個動畫,點擊時我希望顯示動畫,然後讓按鈕導航到下一頁。Windows Phone 7開發延遲按鈕

使用Thread.Sleep(4000)只是崩潰的應用程序,我想知道我怎麼去做這件事。

有沒有延遲導航代碼的方法?

private void batnballBtn_Click(object sender, RoutedEventArgs e) 
{ 
    NavigationService.Navigate(new Uri("/PictureGame.xaml", UriKind.Relative)); 
} 

回答

2

想必動畫是一個Storyboard。您可以在故事板的Completed事件中導航。

myStoryboard.Completed += (s, e) => 
{ 
    myStoryboard.Stop();   
    NavigationService.Navigate(new Uri("/PictureGame.xaml", UriKind.Relative)); 
}; 

這樣你就不需要預測動畫需要多長時間,使得代碼的可重用性,而且你不必擔心處理手動多個線程。

+0

我愛你,非常感謝你 – 2013-05-09 13:24:27

+0

大聲笑,不客氣:) – keyboardP 2013-05-09 13:36:35

1

使用一個線程爲:

http://techkn0w.wordpress.com/2012/04/18/using-a-background-thread-in-windows-phone-7-wp7/

你停止UI線程,這就是爲什麼該按鈕凍結。

只有一個線程負責管理用戶界面,因此,如果您在執行冗長的操作或使其進入睡眠狀態時阻止用戶界面進程管理,則會凍結該進程管理,直到該工作完成。

事情是這樣的:

private void batnballBtn_Click(object sender, RoutedEventArgs e) 
{ 
     ThreadPool.QueueUserWorkItem((WaitCallback)delegate(object state) 
     { 
      Thread.Sleep(4000); 

      this.Dispatcher.BeginInvoke((Action)delegate 
      { 
       NavigationService.Navigate(new Uri("/PictureGame.xaml", UriKind.Relative)); 
      }); 
     }); 
}