Подпишись на наш Twitter

Быть в курсе появления новых статей!

Это счастливое время для разработчиков WinRT: встречайте Caliburn.Micro для WinRT. Основная часть (INPC, EventAggregator) была доступна в качестве превью с прошлого года, теперь Nigel Sampson и Keith Patto, проделали отличную работу и портировали остальной framework на WinRT. Далее короткая инструкция как начать с прицелом на тех, кто уже работал с предыдущей версией framework.

Напоминание: Caliburn.Micro ориентирован на XAML и C# разработчиков. Построен как библиотека классов и не может быть использован с C++.

Пример актуален для работы с Caliburn.Micro версии 1.4.

Bootstrapper

Это руководство основано на шаблоне "Blank App XAML". В проект должны быть добавлены следующие сборки:

  • Caliburn.Micro.WinRT
  • Caliburn.Micro.WinRT.Extensions
  • Windows.UI.Interactivity

После создания нового решения, первая вещь, которую мы должны сделать это добавить в загрузчик приложения Caliburn.Micro. Для других поддерживаемых платформ для этого используется выделенный класс Bootstrapper. Но в WinRT мы используем специализированный класс "Application".

Каждый шаблон WinRT XAML имеет класс, который называется App (размещается в файле App.xaml и App.xaml.cs). Встроенный App класс наследуется от Windows.UI.Xaml.Application. Когда Caliburn.Micro используется в WinRT, App замещается классом наследником Caliburn.Micro.CaliburnApplication. Это требует двух модификаций. Первая изменяет XAML с:


 
     
         
            
 
                
                 
            
 
         
     

на:


 
     
         
            
 
                
                 
            
 
         
     

Заметьте, что мы заменили первую и последнюю строчку объявления. Такие же изменения необходимо сделать и в code-behind:

sealed partial class App : Caliburn.Micro.CaliburnApplication 
{

или в альтернативный вариант:

sealed partial class App 
{

Наш "загрузчик" теперь размещен, но можете получить сообщение, что проект не компилируется. Все что нам надо это заменить код в App.xaml.cs кодом инициализации Caliburn.Micro. Как вы можете видеть этот класс выглядит как класс "Bootstrapper" для других платформ. Здесь пример работы с App.xaml.cs:

using System;
using System.Collections.Generic;
using Caliburn.Micro;
using Windows.ApplicationModel.Activation;
 
namespace caliburn_micro_winrt_getting_started
{
    sealed partial class App
    {
        private WinRTContainer container;
 
        public App()
        {
            InitializeComponent();
        }
 
        protected override void Configure()
        {
            container = new WinRTContainer();
            container.RegisterWinRTServices();
        }
 
        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);
        }
 
        protected override void PrepareViewFirst(Windows.UI.Xaml.Controls.Frame rootFrame)
        {
            container.RegisterNavigationService(rootFrame); 
        }
 
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            DisplayRootView<MainPage>();
        }
    }
}

Загрузчик теперь размещен и время сделать views (представления) и view models (модели представлений).

View

В нашем загрузчике мы определили "MainPage" как представление по умолчанию. В шаблоне Visual Studio уже содержится MainPage и нам не нужно ее реализовывать. Теперь необходимо сделать view model.

View model

Добавьте класс, названный MainPageViewModel в проект. Caliburn.Micro автоматически привяжет представление к этому классу. Экземпляр MainPageViewModel создан и установлен как контекст данных для MainPage. Как и для других поддерживаемых платформ, MainPageViewModel может наследоваться от класса Screen или Conductor:

public class MainPageViewModel : Screen 
{ 
}

На данный момент все установки и можно приступать к добавлению функциональности как обычно для Caliburn.Micro. Наш пример приложения все еще выглядит неинтересно, давайте добавим что-нибудь простое в представление.

Соглашения

Caliburn.Micro для WinRT поддерживает соглашения, как и для других платформ Caliburn.Micro. Для пример framework может автоматически привязывать кнопку к методу в view model и текстовое поле ввода к строковому свойству view model. Давайте добавим кнопку и пустое текстовое поле ввода в MainPage.xaml:

 
    

И добавьте следующее в MainPageViewModel:

public class MainPageViewModel : Screen 
{ 
    private string helloText; 
    public string HelloText 
    { 
        get { return helloText; } 
        set { helloText = value; NotifyOfPropertyChange(() => HelloText); } 
    }
 
    public void SayHello() 
    { 
        this.HelloText = "Hi from the Caliburn.Micro for WinRT!"; 
    } 
}

Вот и все. Кнопка "SayHello" автоматически привязалась к методу SayHello и тоже самое случилось с текстовым полем ввода HelloText.

Заключение

Caliburn.Micro попрежнему простой и лучший framework для увеличения вашей продуктивности при создании приложений для Windows Phone, Silverlight и WPF. И теперь мы имеет тот же мощный framework available для WinRT.

Оригинал: Caliburn.Micro for WinRT: Getting Started




Дата публикации: 03.08.2012 18:37

Ярлыки: Caliburn.Micro, MVVM, Tutorial, WPF, WinRT, Windows 8