2010-12-20 4 views
1

У меня есть приложение, которое я обновляю из некоторых бета-бит - и мой экран карты сбой. Поэтому, чтобы попытаться разобраться в этом, я начал новый - пустой «Приложение для Windows Phone».Caliburn.Micro (.WP7) и Bing Maps Crashing

ссылочной 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

Я не смог воспроизвести проблему с использованием самого последнего источника. Проблема решена? –

+0

Да - это разрешено. – ScottCate

ответ

1

Я нашел ответ.

Ключ здесь - это то, что у меня была эта настройка и прошивка с помощью шаблонов бета-версий. И она перестала работать, когда я перешел на шаблоны RTM WinPhone в VS2010.

Caliburn выполняет некоторые работы от моего имени, которые были «ДОБАВЛЕНЫ» к шаблонам RTM, которые противоречили друг другу. В конце концов, эта проблема имеет/не имеет ничего общего с управлением Bing Maps - так получилось, что это был мой первый экран, поэтому я пытался решить эту проблему.

Это было очень не-полезное исключение:

The parameter is incorrect 

Который, я уверен, что будет происходить на любом экране - если вы пошли по пути обновления шаблонов, как это сделал я. Итак, вот что мне нужно было удалить - чтобы все было в порядке. В новом App.xaml.cs - я удалил (комментирование) в App CTOR ...

// 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 

Особая благодарность Робу за помощь в решении этой тайны!

Смежные вопросы