Caliburn.Micro (.WP7) и сбой карт Bing - PullRequest
1 голос
/ 21 декабря 2010

У меня есть приложение, которое я обновляю с некоторых бета-версий, и мой экран карты падает.Поэтому, чтобы попытаться докопаться до сути - я запустил совершенно новое - пустое «Win Phone Application».

Ссылка Caliburn.Micro (только что построенная из нового кода прошлой ночью) Версия: caliburnmicro_1296ea635677 (из кодекса)

ссылается на файл Microsoft.phone.controls.map.dll

и вMainPage я добавил

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

и добавляю загрузчик в app.xaml

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

, когда страница запускается в эмуляторе телефона - отображается главная страница, и я вижу картумир.если я нажимаю в любом месте на странице - я получаю необработанное исключение «Неверный параметр»

, если я удаляю

из app.xaml - картаработает правильно.

Что ты думаешь?

Спасибо за любой совет?

1 Ответ

1 голос
/ 27 декабря 2010

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

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

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

Это было всегдаисключение Not-Helpful:

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

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

...