Сбой Caliburn.Micro(.WP7) и карт Bing

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

Ссылка на Caliburn.Micro (только что собранная из нового кода вчера вечером) Версия: caliburnmicro_1296ea635677 (из codeplex)

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

и на главной странице я добавил

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

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

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

когда страница запускается в эмуляторе телефона - рендерится главная страница и я вижу карту мира. если я нажму где-нибудь на странице - я получаю необработанное исключение "Параметр неверен"

если я удалю

from the app.xaml - the map works correctly.

Что вы думаете?

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


person ScottCate    schedule 20.12.2010    source источник
comment
Я не смог воспроизвести проблему с последним источником. Проблема решилась?   -  person Christopher Bennage    schedule 23.12.2010


Ответы (1)


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

Ключевым моментом здесь является то, что у меня была эта настройка и работа с бета-шаблонами, и она перестала работать, когда я перешел на шаблоны WinPhone RTM в 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

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

person ScottCate    schedule 27.12.2010