Не могу заставить Caliburn.Micro работать с Windows Phone - PullRequest
0 голосов
/ 14 ноября 2011

Я пытаюсь понять, как Caliburn.Micro работает с Windows Phone (и MVVM в целом), поэтому я создал базовое приложение для Windows Phone, установил Caliburn.Micro NuGet пакет (v1.2.0 - самый последний на данный момент) и следовал нескольким инструкциям здесь и там.Итак, я получил:

WMAppManifest.xml

<DefaultTask  Name ="_default" NavigationPage="Views/HomeView.xaml"/>

Framework / AppBootstrapper.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using Caliburn.Micro;
using MyCaliburn.PhoneUI.ViewModels;

namespace MyCaliburn.PhoneUI.Framework
{
    public class AppBootstrapper : PhoneBootstrapper
    {
        PhoneContainer container;

        protected override void Configure()
        {
            container = new PhoneContainer(RootFrame);
            container.RegisterPhoneServices();
            container.Singleton<HomeViewModel>();
        }

        protected override void OnUnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            if (Debugger.IsAttached)
            {
                Debugger.Break();
                e.Handled = true;
            }
            else
            {
                MessageBox.Show("An unexpected error occured, sorry about the troubles.", "Oops...", MessageBoxButton.OK);
                e.Handled = true;
            }

            base.OnUnhandledException(sender, e);
        }

        protected override object GetInstance(Type service, string key)
        {
            return container.GetInstance(service, key);
        }

        protected override IEnumerable<object> GetAllInstances(Type service)
        {
            return container.GetAllInstances(service);
        }

        protected override void BuildUp(object instance)
        {
            container.BuildUp(instance);
        }
    }
}

ViewModels / HomeViewModel.cs

using Caliburn.Micro;

namespace MyCaliburn.PhoneUI.ViewModels
{
    public class HomeViewModel : Screen
    {
        public HomeViewModel()
        {
            //DisplayName = "Home";
        }
    }
}

View / HomeView.xaml.cs (страница XAML является страницей портрета оконного телефона по умолчанию)

using Microsoft.Phone.Controls;

namespace MyCaliburn.PhoneUI.Views
{
    public partial class HomeView : PhoneApplicationPage
    {
        public HomeView()
        {
            InitializeComponent();
        }
    }
}

App.xaml

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="MyCaliburn.PhoneUI.App"
    xmlns:Framework="clr-namespace:MyCaliburn.PhoneUI.Framework">

    <!--Application Resources-->
    <Application.Resources>
        <Framework:AppBootstrapper x:Key="bootstrapper" />
    </Application.Resources>

</Application>

App.xaml.cs

using System.Windows;

namespace MyCaliburn.PhoneUI
{
    public partial class App : Application
    {
        /// <summary>
        /// Constructor for the Application object.
        /// </summary>
        public App()
        {
            // Standard Silverlight initialization
            InitializeComponent();
        }
    }
}

Теперь, когда я нажимаю F5,приложение запускается и завершает работу, не показывая ни одной страницы или исключения, и не достигает ни одной точки останова, которую я сижу.

Может кто-нибудь сказать мне, что отсутствует в моем коде, что препятствует запуску приложения?

Заранее спасибо.

1 Ответ

3 голосов
/ 15 ноября 2011

Много раз, когда я получаю приложение, которое не запускается - получается, что из-за некоторого рефакторинга класс App больше не является объектом автозагрузки.Щелкните правой кнопкой мыши проект в обозревателе решений, перейдите в свойства / Приложение и убедитесь, что объект запуска установлен правильно.

...