Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 464 / 16 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 6:

Использование шаблона проектирования MVVM

< Лекция 15 || Самостоятельная работа 6: 12345 || Лекция 18 >
Аннотация: Данная работа посвящена использованию шаблона проектирования MVVM при разработке приложения.

Цель работы: освоить методику создания приложений с использованием MVVM

Приложение, построенное по шаблону MVVM

В этой лабораторной работе мы рассмотрим пример приложения, построенного с использованием шаблона MVVM. Наш пример основан на примере "Model-View-ViewModel Sample" "Пример приложения, построенного по шаблону модель-представление-модель представления"), http://code.msdn.microsoft.com/Model-View-ViewModel-Sample-8cb92fd9.

В приложении (рис. 23.1.) реализуется механизм наблюдения за игровыми достижениями.

Проект приложения, созданного с использованием шаблона проектирования MVVM

увеличить изображение
Рис. 23.1. Проект приложения, созданного с использованием шаблона проектирования MVVM

На главной странице имеются два списка. В первом выводятся сведения о собранных элементах (Items), во втором – данные о пройденных уровнях. Общая структура проекта, которую вы можете видеть на вышеприведенном рисунке, такова:

В папке Models расположена модель данных (Accomplishment.cs)

В папке ViewModel расположена модель представления, ViewModel.cs

В папке View расположены два представления, ItemView.xaml и LevelView.xaml это – пользовательские элементы управления, настроенные на использование их совместно с системой привязки данных.

В файле StateUtilities.cs объявлен вспомогательный класс, который используется для хранения сведений о том, запущено ли приложение из списка приложений (или с рабочего стола), или оно активировано после того, как пользователь недавно вышел из него.

Страница MainPage.xaml содержит представления, механизмы привязки данных из модели представления и другие вспомогательные механизмы.

В Листинге 23.1 приведен код файла Accomplishment.cs, то есть – модели данных.

using System;
using System.ComponentModel;

namespace sdkMVVMCS.Model
{
    public class Accomplishment : INotifyPropertyChanged
    {
        // Название достижения.
        public string Name { get; set; }

        // Тип достижения, Item (элемент) или Level (уровень).
        public string Type { get; set; }

        // Количество собранных элементов.
        private int _count;
        public int Count
        {
            get
            {
                return _count;
            }
            set
            {
                _count = value;
                RaisePropertyChanged("Count");
            }
        }

        // Завершен ли уровень
        private bool _completed;
        public bool Completed
        {
            get
            {
                return _completed;
            }
            set
            {
                _completed = value;
                RaisePropertyChanged("Completed");
            }
        }


        public event PropertyChangedEventHandler PropertyChanged;

        private void RaisePropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        // Создание копии сведений о достижениях для сохранения.
        // Объект участвует в системе привязки данных, данная копия не участвует
        public Accomplishment GetCopy()
        {
            Accomplishment copy = (Accomplishment)this.MemberwiseClone();
            return copy;
        }
    }
}
Листинг 23.1. Код файла Accomplishment.cs
< Лекция 15 || Самостоятельная работа 6: 12345 || Лекция 18 >