Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
course_(Windows&Web).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.68 Mб
Скачать

Шаг 3. Перевод команд из неактивного состояния в активное и обратно.

Задача. Вы хотите избирательно переводить команды из неактивного состояния в активное и обратно, в зависимости от состояния приложения.

Решение. Пусть команда Exit (Выход) становится неактивной, когда в текстовое поле введен текст. Внешне это будет проявляться в том, что пункт меню окрасится в серый цвет, а кнопка панели инструментов перестанет действовать.

public partial class Windowl:Window { public Windowl() { InitializeComponent(); //Создать обработчики для наших нестандартных команд CommandBinding cmdBindingExit = new CommandBinding (WpfTextEditor Commands.ExitCommand); cmdBindingExit.Executed += new ExecutedRoutedEventHandler(cmdBindingExit_Executed); cmdBindingExit.CanExecute += new CanExecuteRoutedEventHandler(cmdBindingElxit_CanExecute); //. . . } void cmdBindingExit_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = textBox.Text.Length == 0; } }

Краткие итоги

Мы убедились, что команды представляют собой механизм ввода в WPF и Silverlight, обеспечивающий обработку ввода на более семантическом уровне по сравнению с устройствами ввода. В качестве примеров команд мы рассмотрели операции Копировать, Вырезать и Вставить, доступные во многих приложениях.

Литература

  1. Знакомство с маршрутизированными событиями и командами в WPF http://msdn.microsoft.com/ru-ru/magazine/cc785480.aspx

Лекция 9. Применение паттерна mvvm как оптимального при проектировании wpf и Silverlight приложений

Краткая аннотация лекции: лекция дает краткий обзор паттерна MVVM и описывает, как реализовать его фундаментальные характеристики

Цель лекции: рассмотреть ключевые классы паттерна MVVM: вид, модель представления, модель, А так же их функциональное взаимодействие. Разобрать интерфейсы ответственные за осуществление привязки данных: INotifyPropertyChanged. и INotifyCollectionChanged. Узнать о различных способах реализации команд в паттерне MVVM. Познакомить с интерфейсом IDataErrorInfo. Дать обзор различных возможностей определять зависимости между представлением, моделью представления, и классами модели.

Паттерн Model-View-ViewModel (mvvm)

MVVM поможет вам разделить бизнес-логику и логику представления приложения от его пользовательского интерфейса (UI). Поддержание разделения между логикой приложения и UI помогает решать проблемы разработки и проектирования и может сделать ваше приложение намного более лёгким для тестирования, поддержания, и развития. Это может также значительно улучшить возможности повторного использования кода и позволяет разработчикам и дизайнерам UI более легко сотрудничать при разработке соответствующих частей приложения.

Используя паттерн MVVM, UI приложения, нижележащее представление и бизнес-логика разделяются на три отдельных класса: вид, который инкапсулирует UI и его логику; модель представления, которая инкапсулирует логику представления и состояния; и модель, которая инкапсулирует бизнес-логику приложения и данные.

Обязанности и характеристики классов.

Паттерн MVVM является близкой разновидностью паттерна Presentation Model, оптимизированного для усиления некоторых базовых возможностей WPF и Silverlight, таких как привязка данных, шаблоны данных, команды, и поведения.

В паттерне MVVM представление инкапсулирует UI и любую логику UI, модель представления инкапсулирует логику представления и состояния, и модель инкапсулирует бизнес-логику и данные. Представление взаимодействует с моделью представления посредством привязки данных, команд и событий уведомления об изменениях. Запросы модели представления, наблюдатели и координаты обновляют модель. Преобразования, валидация и агрегация данных необходимы для отображения данных в представлении.

На рисунке 9.1 показаны три класса MVVM и их взаимодействие.

Рисунок 9.1. Взаимодействие ключевых классов MVVM.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]