【问题标题】:Caliburn.Micro(.WP7) and Bing Maps CrashingCaliburn.Micro(.WP7) 和 Bing 地图崩溃
【发布时间】:2010-12-20 23:27:43
【问题描述】:

我有一个应用程序正在从一些测试版升级 - 我的地图屏幕崩溃了。因此,为了深入了解它 - 我开始了一个全新的 - 空白的“Win Phone Application”。

引用的Caliburn.Micro(昨晚刚刚从新代码构建)版本:caliburnmicro_1296ea635677(来自codeplex)

引用 Microsoft.phone.controls.map.dll

在我添加的 MainPage 中

<Grid>
 <Maps:Map />
</Grid>

我在 app.xaml 中添加了一个引导程序

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

当页面在手机模拟器中运行时 - 主页面呈现,我看到了世界地图。如果我单击页面上的任意位置 - 我会收到“参数不正确”的未处理异常

如果我删除了

来自 app.xaml - 地图工作正常。

你怎么看?

感谢您的建议?

【问题讨论】:

  • 我无法使用最新源重现该问题。问题解决了吗?

标签: windows-phone-7 caliburn caliburn.micro


【解决方案1】:

我找到了答案。

这里的关键 - 是我进行了此设置并使用了 Beta 模板 - 当我在 VS2010 中迁移到 WinPhone RTM 模板时它停止工作。

Caliburn 代表我做了一些工作,即“添加”到 RTM 模板中 - 这些模板相互冲突。最后这个问题与 Bing Maps 控件无关/无关 - 碰巧 - 那是我的第一个屏幕 - 所以这就是我试图解决问题的地方。

这是一个无用的例外:

The parameter is incorrect

我很确定会在任何屏幕上发生 - 如果您像我一样进入模板的升级路径。所以这是我必须删除的 - 让一切恢复正常。在新的 App.Xaml.cs 中 - 我在 App Tor 中删除(通过评论)...

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


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

然后我删除了这些方法体,因为在从 ctor 中删除 InitializePhoneApplication() 调用后它只是死代码...

// 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 帮助解开这个谜团!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多