2010-12-20 103 views
1

我有一個應用程序,我從一些beta版升級 - 而我的地圖屏幕崩潰。所以爲了達到它的底部 - 我開始了一個全新的「Win Phone應用程序」。Caliburn.Micro(.WP7)和Bing Maps崩潰

引用的Caliburn.Micro版本(距離新代碼昨晚建):caliburnmicro_1296ea635677(從CodePlex上)

引用Microsoft.phone.controls.map.dll

和我說

的的MainPage
<Grid> 
<Maps:Map /> 
</Grid> 

和我添加一個引導程序的App.xaml

<WP7:PhoneBootStrapper x:Name="bootstrapper" /> 

當頁面在電話模擬器中運行時 - 主頁面呈現並且我看到世界地圖。如果我點擊網頁的任意位置上 - 我得到的「參數不正確」

未處理的異常,如果我從App.xaml中取出

- 地圖上正常工作。

您認爲如何?

感謝您的任何建議?

+0

我無法重現與最新的來源問題。問題解決了嗎? – 2010-12-23 18:44:55

+0

是的 - 已解決。 – ScottCate 2010-12-29 21:03:03

回答

1

我找到了答案。

這裏的關鍵是 - 我有這個設置並且使用Beta模板 - 當我轉移到VS2010中的WinPhone RTM模板時它停止工作。

Caliburn代表我做了一些工作,即「添加」到RTM模板 - 彼此衝突。最後,這個問題與Bing Maps控件沒有任何關係 - 它恰好就是這樣 - 這是我的第一個屏幕 - 所以這就是我試圖解決問題的地方。

這是以往任何時候都如此不-有用的例外:

The parameter is incorrect 

其中,我敢肯定會發生在任何屏幕上 - 如果你去的模板的升級路徑,像我一樣。所以這是我必須刪除 - 讓一切恢復正常。在新的App.Xaml.cs - 我在App構造函數刪除(通過評論)...

// Phone-specific initialization 
// InitializePhoneApplication(); 


// Global handler for uncaught exceptions. 
// UnhandledException += Application_UnhandledException; 

然後,我刪除了這些方法體,因爲它是從去除InitializePhoneApplication()調用之後剛剛死碼ctor ...

// Code to execute when the application is launching (eg, from Start) 
// This code will not execute when the application is reactivated 
private void Application_Launching(object sender, LaunchingEventArgs e) 
{ 
} 

// Code to execute when the application is activated (brought to foreground) 
// This code will not execute when the application is first launched 
private void Application_Activated(object sender, ActivatedEventArgs e) 
{ 
} 

// Code to execute when the application is deactivated (sent to background) 
// This code will not execute when the application is closing 
private void Application_Deactivated(object sender, DeactivatedEventArgs e) 
{ 
} 

// Code to execute when the application is closing (eg, user hit Back) 
// This code will not execute when the application is deactivated 
private void Application_Closing(object sender, ClosingEventArgs e) 
{ 
} 

// Code to execute if a navigation fails 
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
{ 
    if (System.Diagnostics.Debugger.IsAttached) 
    { 
     // A navigation has failed; break into the debugger 
     System.Diagnostics.Debugger.Break(); 
    } 
} 

// Code to execute on Unhandled Exceptions 
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
{ 
    if (System.Diagnostics.Debugger.IsAttached) 
    { 
     // An unhandled exception has occurred; break into the debugger 
     System.Diagnostics.Debugger.Break(); 
    } 
} 

#region Phone application initialization 

// Avoid double-initialization 
private bool phoneApplicationInitialized = false; 

// Do not add any additional code to this method 
private void InitializePhoneApplication() 
{ 
    if (phoneApplicationInitialized) 
     return; 

    // Create the frame but don't set it as RootVisual yet; this allows the splash 
    // screen to remain active until the application is ready to render. 
    RootFrame = new PhoneApplicationFrame(); 
    RootFrame.Navigated += CompleteInitializePhoneApplication; 

    // Handle navigation failures 
    RootFrame.NavigationFailed += RootFrame_NavigationFailed; 

    // Ensure we don't initialize again 
    phoneApplicationInitialized = true; 
} 

// Do not add any additional code to this method 
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) 
{ 
    // Set the root visual to allow the application to render 
    if (RootVisual != RootFrame) 
     RootVisual = RootFrame; 

    // Remove this handler since it is no longer needed 
    RootFrame.Navigated -= CompleteInitializePhoneApplication; 
} 

#endregion 

特別感謝Rob幫助解決這個謎團!