Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 473 >> Следующая

• Команды. Команда представляет задачу приложения и следит за тем, когда она может быть выполнена. Однако кода, выполняющего задачу приложения, команды на самом деле не содержат.
• Привязки команд. Каждая привязка (binding) подразумевает соединение команды с имеющей к ней отношение логикой приложения, отвечающей за облуживание определенной области пользовательского интерфейса. Такой факторизованный дизайн очень важен, потому что одна и та же команда может использоваться в нескольких местах в приложении и иметь в каждом из них разное предназначение. Для обеспечения подобного поведения как раз и служат разные привязки одной и той же команды.
• Источники команд. Источник команды инициирует команду. Например, и элемент управления Menultem, и элемент управления Button могут служить источниками команд. Щелчок на них в таком случае будет приводить к выполнению привязанной команды.
• Целевые объекты команд. Целевой объект команды — это элемент, для которого предназначена данная команда, т.е. элемент, на котором она выполняется. Например, команда Paste может вставлять текст в элемент TextBox, а команда OpenFile — отображать документ в элементе DocumentViewer. Целевой объект может быть важен, а может быть и неважен, что зависит от природы команды.
В следующих разделах вы сможете более подробно ознакомиться с тем, что собой представляет первый компонент — команда WPF.
Book_Pro_WPF-2.mdb 291
5:10:13
292 Глава 10
Интерфейс ICommand
Сердцем модели команд WPF является интерфейс System.Windows.Input.ICommand, определяющий способ, в соответствие с которым работают команды. Этот интерфейс включает два метода и событие:
public interface ICommand
{
void Execute(object parameter); bool CanExecute(object parameter); event EventHandler CanExecuteChanged;
}
В простой реализации в методе Execute() должна содержаться логика приложения, касающаяся задачи (например, печати документа). Однако, как будет показано в следующем разделе, WPF является немного более совершенной технологией. Она использует метод Execute() для запуска более сложного процесса, который, в конечном счете, заканчивается возбуждением события, обрабатываемого в совершенно другом месте в приложении. Это дает разработчику возможность использовать готовые классы команд и включать в них свою собственную логику, а также гибкость применения одной команды (например, Print) в нескольких различных местах.
Метод CanExecute() возвращает информацию о состоянии команды, а именно — значение true, если она включена, и значение false, если она отключена. Методы Execute() и CanExecute() принимают дополнительный объект-параметр, который можно использовать для передачи с ними любой другой необходимой информации.
И, наконец, событие CanExecuteChanged вызывается при изменении состояния. Для любых использующих данную команду элементов управления оно является сигналом о том, что им следует вызвать метод CanExecute() и проверить состояние команды. Это часть связующего элемента, который позволяет источникам команд (вроде элемента управления Button или элемента управления MenuItem) автоматически включать себя, когда команда доступна, и отключать, когда она не доступна.
Класс RoutedCommand
При создании своих собственных команд реализовать интерфейс ICommand напрямую не обязательно. Вместо этого можно использовать класс System.Windows. Input.RoutedCommand, который реализует этот интерфейс автоматически. Класс RoutedCommand является единственным классом в WPF, который реализует интерфейс ICommand. Другими словами, все команды WPF представляют собой экземпляры класса RoutedCommand (или производного от него класса).
Одна из ключевых концепций, лежащих в основе модели команд в WPF, состоит в том, что класс RoutedCommand не содержит никакой логики приложения. Он просто представляет команду. Это означает, что один объект RoutedCommand обладает теми же возможностями, что и другой.
Класс RoutedCommand добавляет дополнительную инфраструктуру для туннелирования и перемещения событий. Если интерфейс ICommand инкапсулирует идею команды — действие, которое может инициироваться и быть или не быть доступным, то класс RoutedCommand изменяет команду так, чтобы она могла подобно пузырьку (bubble) подниматься вверх по иерархии элементов WPF до подходящего обработчика событий.
Для поддержки маршрутизируемых событий класс RoutedCommand реализует интерфейс ICommand как приватный и затем добавляет немного отличающиеся версии его методов. Наиболее заметным изменением является то, что методы Execute() и
Book_Pro_WPF-2.mdb 292 19.05.2008 18:10:14
Команды 293
CanExecute() теперь принимают дополнительный параметр. Ниже показано, как выглядят новые сигнатуры этих методов:
public void Execute(object parameter, IlnputElement target)
{...}
public bool CanExecute(object parameter, IlnputElement target)
{...}
target — это целевой элемент, в котором начинается обработка события. Это событие начинает обрабатываться в целевом элементе и затем поднимается вверх до находящихся на более высоком уровне контейнеров до тех пор, пока приложение не использует его для выполнения подходящей задачи. (Для обработки события Executed элементу необходима помощь еще одного класса — класса CommandBinding.)
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 473 >> Следующая