2010-12-20 100 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帮助解决这个谜团!