2012-04-25 36 views
1

我有一個應用程序,我有很多的參考和加載時間是我不能接受的。我已經刪除了初始屏幕圖像,並創建了一個動畫加載屏幕,方法是創建一個單獨的項目,不涉及主應用程序,然後導航到應用程序其餘部分的第一頁。現在它啓動得很快,但還是有點欠缺。是否可以預裝Windows Phone 7中的程序集?

我想在加載屏幕消失之前再做一次動畫。我能想到的唯一方法就是實際預載導航所需的程序集到下一頁,做一個動畫,然後導航。

我已經試過

  • OnNavigatedFrom但動畫沒有足夠的時間來運行,因爲頁面會被新的頁面很快從該點所取代。
  • OnNavigatingFrom是沒有任何幫助,因爲它是當我打電話NavigationService.Navigate();
  • 搜索網頁和堆棧溢出:)
  • 我還審議了具有下一個頁面顯示負載的副本僞造有點叫屏幕上,並在那裏做最後一個動畫,但它無法匹配加載屏幕動畫的當前狀態並且難以維護

感謝您的任何想法!

回答

0

事實證明,您可以通過創建您要導航到的頁面的新實例來預加載。不幸的是,至少在我的經驗中,必須在可能導致動畫放緩的UI線程上完成。

下面是如何執行動畫,然後預加載,然後在導航之前執行另一個動畫的示例。 :

public partial class LoadScreen : PhoneApplicationPage 
{ 
    public LoadScreen() 
    { 
     InitializeComponent(); 
     this.Loaded += OnLoaded; 
    } 

    private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
    { 
     var sb = new Storyboard(); 
     // create your animation here 

     sb.Completed += (sender, args) => PreLoad(); 
     sb.Begin(); 
    } 

    private void PreLoad() 
    { 
     // this is the part that actually takes time and causes things to get loaded 
     // you may need it in a try/catch block depending on what is in your constructor 
     var page = new PageToNavigateTo(); 

     // now create an animation at the end of which we navigate away 
     var sbOut = new Storyboard(); 
     // create your animation here 

     sbOut.Completed += (sender, args) => NavigateToNextScreen(); 
     sbOut.Begin(); 
    } 

    private void NavigateToNextScreen() 
    { 
     // navigate here 
    } 

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedFrom(e); 

     // remove the loading screen from the backstack so the user doesn't see it again when hitting the back button 
     NavigationService.RemoveBackEntry(); 
    } 


} 
0

如果您想強制加載程序集,只需從該程序集中引用一個類型即可。

例如,類似Console.WriteLine(typeof(YourAssembly.SomeType));的東西將強制加載YourAssembly

現在爲您的問題,也許你可以使用usercontrols?將主頁的內容放在用戶控件中。顯示加載頁面,在後臺創建用戶控件,讓動畫播放,然後當播放完成後,用usercontrol替換頁面的內容。

+0

我在這裏測試了你的想法,但看起來程序集是在啓動時加載的,而不是僅在執行該行時。用戶控制的想法是一個很好的想法,但不符合我想要做的。雖然謝謝! – 2012-04-26 18:23:50

相關問題