Расширение возможностей IntelliSense для XAML-редактора Visual Studio 2010

Оценив новые возможности IntelliSense в редакторе кода VS 2010, по принципу PascalCase, когда по ходу печати вы получаете список предполагаемых команд. К сожалению, новые вкусные возможности не доступны в XAML редакторе. Но нет повода для печали…

image

image

Возможности

  • Поддержка принципа PascalCase
  • Опциональные фильтры
  • Фильтрация на основе типа элемента
  • xmlns IntelliSense опции
    • Отображение/скрытие только сборок проекта
    • Отображение/скрытие схем

  • Фильтрация настроек сохраняется для текущей сессии Visual Studio

Обзор PascalCase


Принцип PascalCase-фильтрации позволяет быстро находить требуемые элементы, поиск идет по заглавным буквам и начинает искать при наличии минимум двух заглавных букв.

Ниже представленное изображение демонстрирует как работает данный способ фильтрации.

PascalLookupOne

Установка сборки, используя xmlns PascalCase выполняется в три счёта.

PascalLookupTwo

Автоматически сужающийся фильтр списка


Когда фильтр сужения списка активен, то добавляет две дополнительные возможности:
  • Суживающийся список отображаемых элементов, которые содержат ваш текст
  • Приоритетность выделения элементов списка
    • Выделяет первый элемент, которые начинается с вашего текста.
    • Выделяет первое вхождение, которое содержит ваш текст.


http://img684.imageshack.us/img684/1791/narrowlist.png

Посмотрите как легко найти Grid.Row или Grid.RowSpan, при включенном сужении списка.

NarrowingEnabledTwo

Фильтрация элементов списка по типу


Собственно данный пункт и был основной движущей силой при написании расширения. Я немного растерялся, при вводе XAML я получил список состоящий из 2 свойств, 4 событий и 75 пространств имен. Проблема решена.

Стандартный список элементов, заметьте, какое огромное количество пространств имен.

Namespaces

Отожмите кнопку с панели и пространства имен исчезнут со списка:

NoNamespaces

Другие кнопки работают по такому же принципу. Серый фон обозначает активное состояние. Белый фон - неактивное состояние.

xamlns IntelliSense


Ниже представленное изображение демонстрирует две кнопки фильтра, которые предоставляет xamls IntelliSense.
  • Отображает только сборки проекта, если активен
  • Убирает вхождения схемы, если активен

xmlnsOneЕще один способ получить ваши сборки в быстрый способ продемонстрирован ниже. Два кнопке фильтра в стандартном состоянии и я ввожу WC для быстрого поиска сборки в моём проекте.

xmlnsTwo

Ниже, я использую функционал автоматически сужающегося списка для поиска всех сборок, которые содержат слово "media". Поиск включает в себя так же значения в скобках.

xmlnsThree

Менеджер расширений


Для просмотра установленных расширений используйте меню Visual Studio 2010: Tools->Extension Manager:

ExtensionManager

Отсюда вы можете выключить или удалить любое расширение

ExtensionManagerTwo

Вы так же можете изменить настройки для расширений через Tools->Options.

ToolsOptions

Требования


Visual Studio 2010 Release Candidate или старше.

Возможно будет работать на Visual Studio 2010 Beta2, но я не тестировал.

Загрузки


XAML Editor IntelliSense Presenter Extension VSIX Installer  (41KB)
XAML Editor IntelliSense Presenter Extension Source Code (не обязательно)  (39KB)  (C# исходный код)

Для исходного кода


Если вы все же решили загрузить исходный код и, возможно, модифицировать его. Вы должны обязательно деинсталировать расширение, если вы использовали VSIX  для его установки.

Вдобавок, если вы желаете создать своё собственное расширение, убедитесь, что следующая папка пустая, до начала создания нового проекта. Если у вас появились конфликты в проекте, или присутствует другое IntelliSense-расширение в этой папке, то у вас могут возникнуть конфликты и при отладке.

C:\Users\<имя пользователя>\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions

Как оно работает?


Я многому научился создавая данное расширение. На следующих неделях, я объясню как работает код данного расширения и чем он отличается от примера на CodePlex.

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23911