Краткий анализ задачи
Теперь будем модифицировать этот проект, подгоняя его под использование механизма команд. Но прежде проведем ревизию библиотечных команд, возможно не все из них закрывают наши источники и часть команд придется создавать самим. За основу возьмем источники меню, поскольку там наиболее полно представлены задачи нашего приложения. Интересующие нас библиотечные команды находятся в классе ApplicationCommands пространства имен System.Windows.Input
| Сопоставление задач приложения и библиотечных команд | |||||
| Раздел меню | Задача | Библиотечная команда | Встроенные жесты | Наши жесты | Регулировать доступность ? |
| File | New | ApplicationCommands.New | Ctrl+N | Ctrl+N | |
| Open | ApplicationCommands.Open | Ctrl+O | Ctrl+O | ||
| Save | ApplicationCommands.Save | Ctrl+S | Ctrl+S | Да | |
| Save As | ApplicationCommands.SaveAs | ||||
| Page Setup | |||||
| Print Preview | ApplicationCommands.PrintPreview | Ctrl+F2 | Ctrl+F2 | ||
| ApplicationCommands.Print | Ctrl+P | Ctrl+P | |||
| Exit | |||||
| Edit | Undo | ApplicationCommands.Undo | Ctrl+Z | Ctrl+Z | Да |
| Redo | ApplicationCommands.Redo | Ctrl+Y | Ctrl+Y | Да | |
| Cut | ApplicationCommands.Cut | Ctrl+X | Ctrl+X | Да | |
| Copy | ApplicationCommands.Copy | Ctrl+C | Ctrl+C | Да | |
| Paste | ApplicationCommands.Paste | Ctrl+V | Ctrl+V | Да | |
| Delete | ApplicationCommands.Delete | Del | Del | Да | |
| Find | ApplicationCommands.Find | Ctrl+F | Ctrl+F | ||
| Find Next | F3 | ||||
| Replace | ApplicationCommands.Replace | Ctrl+H | Ctrl+H | Да | |
| Go To | Ctrl+G | ||||
| Select All | ApplicationCommands.SelectAll | Ctrl+A | Ctrl+A | Да | |
| Format | Font | ||||
| Word Wrap | Ctrl+W | ||||
| Help | About |
Глядя на таблицу, можно сделать следующие выводы для нашего приложения:
- Не все задачи имеют библиотечные команды и часть команд придется создать вручную (такие команды называются пользовательскими или настраиваемыми).
- Не для всех задач нужно регулировать доступность источников, поэтому эти задачи можно оставить как есть, ничего не меняя, поскольку они у нас работают нормально.
- Задачи, которые не имеют библиотечных команд, не требуют регулирования доступности, поэтому их можно оставить как есть и не создавать для них команды. Но мы все-таки их создадим, для тренировки.
- Встроенные жесты библиотечных команд и наши жесты совпадают, мы их так подгадали, поэтому, для тренировки, в задачах, к которым мы применим команды, наши жесты можно удалить (а они заменятся на встроенные)
Недостающие команды нужно создавать в процедурном коде. А вот подключать все команды к источникам и связывать с коллекцией CommandBindings окна, пять же для тренировки, будем и в разметке, и в процедурном коде.
Еще раз выпишем те задачи, которые мы будем реализовывать с помощью команд
| План задач, которые предстоит реализовать командами | ||||||
| Где присоединить к источнику? | Где привязать к окну? | Задача | Библиотечная команда | Alias (псевдоним) | Жесты | Рег? |
| Разметка | Разметка | Save | Save | SaveCommand | Ctrl+S | Да |
| Разметка | Разметка | Page Setup | PageSetupCommand | Нет | ||
| Разметка | Разметка | Undo | Undo | UndoCommand | Ctrl+Z | Да |
| Разметка | Код | Redo | Redo | RedoCommand | Ctrl+Y | Да |
| Разметка | Код | Cut | Cut | CutCommand | Ctrl+X | Да |
| Разметка | Код | Copy | Copy | CopyCommand | Ctrl+C | Да |
| Код | Разметка | Paste | Paste | PasteCommand | Ctrl+V | Да |
| Код | Разметка | Delete | Delete | DeleteCommand | Del | Да |
| Код | Разметка | Find Next | FindNextCommand | F3 | Да | |
| Код | Код | Replace | Replace | ReplaceCommand | Ctrl+H | Да |
| Код | Код | Go To | GoToCommand | Ctrl+G | Нет | |
| Код | Код | Select All | SelectAll | SelectAllCommand | Ctrl+A | Да |
Мы выбрали 12 задач, которые хотим реализовать с помощью команд. Эта табличка будет нашим планом для дальнейшей работы.
Дата добавления: 2015-04-15; просмотров: 782;
