Инструменты для редактирования XAML

ReSharper предоставляет дополнительную помощь при редактировании файлов XAML при работе над приложениями Universal Windows Platform (UWP), WPF, Silverlight или Windows Phone. Сюда относится анализ качества кода на лету, рефакторинги, генерация и реорганизация кода, а также быстрая навигация по всему решению.

Анализ качества кода

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

ReSharper подсвечивает проблемы в XAML-файле

Пример 1. Ошибки на уровне языка XAML

Представим, что вы работаете над WPF-проектом, в котором разрешено использование только XAML 2006. Если ReSharper сталкивается с обобщенным объектом из XAML 2009, такой объект подсвечивается как языковая ошибка. По нажатию Alt+Enter на подсвеченном объекте ReSharper предлагает выполнить быстрое исправление и объявить тип, унаследованный от System.Collections.Generic.List<string>.

Когда вы применяете быстрое исправление, ReSharper:

  • Создается новый файл .cs, в котором объявляется новый тип-обертка, наследующий типу List.
  • В первоначальном файле XAML удаляется атрибут TypeArguments, тип объекта изменяется на новый тип-обертку и, если необходимо, вставляется новая директива пространства имен.
ReSharper подсвечивает проблемы в XAML-файле

Пример 2. Несуществующие ресурсы

Если используется ресурс, который еще не объявлен, подсветка ошибок ReSharper не позволит забыть об этом.

По нажатию Alt+Enter ReSharper предлагает несколько вариантов мест для создания недостающего ресурса.

Если тип сгенерированного ресурса еще не объявлен, это не проблема: ReSharper предложит создать из использования либо тип CLR, либо тип XAML (т. е. UserControl). При выборе одного из двух вариантов создается файл с реализацией по умолчанию.

Быстрые исправления для неверно размещенных комментариев в XAML

Пример 3. Комментарии в неположенных местах

Если комментарий случайно оказался внутри элемента, ReSharper подсветит его и предложит варианты решения проблемы.

Исправление избыточных квалификаторов типов в XAML

Пример 4. Избыточные квалификаторы типов

В случае, если для сеттера стиля определен TargetType, ReSharper обнаруживает избыточные квалификаторы типов и предлагает исправление.

Smart Completion в ReSharper генерирует методы-обработчики событий Smart Completion в ReSharper помогает выбрать нужные цвета Автодополнение для неимпортированных типов ReSharper помогает импортировать типы из пространств имен, на которые еще не ссылается файл XAML

Расширенный IntelliSense для XAML

Автодополнение кода в ReSharper работает для тегов XAML. Поддержка сокращений CamelHumps позволяет быстро добавлять атрибуты: достаточно ввести несколько символов и нажать Ctrl+Space, чтобы открылся список вариантов автодополнения символов.

При вызове Smart Completion нажатием Ctrl+Alt+Space ReSharper предлагает дополнительные контекстные варианты в зависимости от места в коде, где было нажато сочетание клавиш. Например, при вызове Smart Completion в объявлении обработчика события предлагается сгенерировать метод-обработчик.

Вызов Smart Completion в атрибуте позволяет быстро создать новый ресурс (статический или динамический), связывание или ссылку на статический элемент.

Еще одно замечательное свойство автодополнения ReSharper — отображение цветов кистей, ожидаемых в таких атрибутах, как Background или OpacityMask.

ReSharper также поддерживает автодополнение для неимпортированных типов в XAML. Это значит, что автодополнение типов действует для сборок, на которые есть ссылки в решении, но в текущем файле нет соответствующих директив импорта пространства имен.

Разумеется, в таких случаях автодополнение ReSharper вставляет требуемую директиву импорта пространства имен автоматически.

Если же в файле XAML есть тип, который по каким-либо причинам не был импортирован, ReSharper предложит быстро создать директиву пространства имен.

Навигация от символа в коде XAML Навигация к связанным файлам из кода XAML Окно File Structure для XAML-файла

Навигация и поиск

Меню ReSharper Navigate To работает для элементов кода XAML так же, как и для файлов кода на C#. Сочетание клавиш Alt+` на объявлении или использовании символа открывает меню с вариантами целей навигации.

Навигация по команде Go To File Member работает для файлов XAML так же, как и для C#-файлов и помогает переходить к элементам с определенным типом, именем или ключом. Опять же вводить полное имя не придется — благодаря поддержке CamelHumps в нижнем регистре, для поиска WatchList достаточно ввести wl.

По нажатию Ctrl+Alt+F7 в файле XAML выдается список всех связанных файлов, например: файла с выделенным кодом, любых ресурсов, на которые ссылается текущий файл XAML, или изображений, используемых в элементах интерфейса.

Навигация Go to Declaration (F12) и Ctrl + щелчок мышью тоже одинаково работает в файлах XAML и в обычных файлах кода C#. Например, можно при удерживаемой клавшие Ctrl навести курсор мыши на имя определенного класса. ReSharper подчеркнет имя класса, а по нажатию на ссылку переведет прямо к определению класса.

Кроме того, в окне File Structure вы можете просмотреть структуру XAML-файла и быстро перейти к элементу кода, который вы ищете.

Использования определенного элемента XAML можно найти по сочетанию клавиш Shift+F12, которое вызывает команду Find Usages. ReSharper отображает все места, где используюется данный элемент.

Также можно нажать сочетание клавиш Shift+Alt+F11, которое подсвечивает использования и позволяет быстро ознакомиться со всеми местами в текущем файле, где используется определенный символ.

Вызов шаблона для свойства зависимости Вызов шаблона для свойства зависимости

Генерация свойств зависимостей

Создание свойств зависимостей может оказаться донельзя нудным делом. Здесь ReSharper тоже может помочь: его движок шаблонов кода способен создавать детализированные сниппеты, которые за пару нажатий клавиш можно развернуть в свойства зависимостей. Если просто ввести в редакторе имя шаблона кода, развертывается пара «свойство – соответствующее свойство зависимости», причем везде, где требуется заполнение полей, работает умное автодополнение кода.

Аналогичным образом, ReSharper умеет развертывать прикрепленные свойства, которые отличаются еще большей громоздкостью по сравнению с обычными свойствами зависимостей. После развертывания шаблона можно пройти по всем его многочисленным переменным, используя автодополнение кода ReSharper везде, где это возможно.

Хотя шаблоны Live Templates для свойств зависимостей и прикрепленных свойств пока не работают в ReSharper «из коробки», из можно скачать и импортировать.

Автодополнение для ASP.NET в ReSharper

Помощь при редактировании XML и XAML

ReSharper поддерживает различные контекстные действия, которые упрощают работу с синтаксисом XML и могут использоваться в XAML-файлах. Например, вы можете заменить имя тега другим именем, преобразовать атрибут во вложенный элемент, удалить тег и поднять его дочерние элементы на уровень выше.

Существует также более десятка контекстных действий, специально созданных для XAML, которые позволяют добавлять или убирать определения столбцов или строк, создавать представления и ресурсы, переключаться между различными типами ссылок на ресурсы, извлекать сеттеры свойств в стили и т. д.

Извлечение стиля XAML Извлечение стиля XAML

Рефакторинг XAML-кода

Поскольку элементы XAML, по сути, эквивалентны обычным членам класса, некоторые рефакторинги, работающие в коде на C#, применимы и к XAML. Вы можете переименовать или безопасно удалить ресурс, просто открыв меню Refactor This.

При навигации по ссылке к свойству или методу в XAML список рефакторингов, предлагаемых в меню Refactor This, не уступает аналогичному списку для кода C# или VB.NET.

Помимо рефакторингов для C# и VB.NET в ReSharper предусмотрено несколько специальных XAML-рефакторингов:

При работе с XAML часто для нескольких элементов интерфейса объявляют встроенные стили, а затем перемещают их в определение стиля. Благодаря рефакторингу ReSharper Extract Style эта операция проходит гораздо легче.

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

Рефакторинги Extract Resource и Inline Resource позволяют переместить практически любое присвоение свойства (включая расширения разметки) в ресурс и наоборот — определение изымается из ресурса и вставляется в сам элемент.

ReSharper помогает реорганизовать код XAML

Реорганизация кода

Используя функции реорганизации кода, вы можете изменять порядок элементов в XAML-файле, а также атрибутов внутри элемента. Обе операции выполняются нажатием Ctrl+Alt+Shift и клавиш со стрелками.

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

С помощью этих клавиш можно изменить положение целого тега по отношению к другим тегам. Если расширить выделенную область сочетанием клавиш Ctrl+Alt+вправо, чтобы в нее вошел тег вместе со всем своим содержимым, можно продолжать нажимать клавиши влево и вправо, при этом «понижается ранг» текущей выделенной области, т. е. она оказывается внутри всех встреченных тегов.

Обратите внимание:

Все сочетания клавиш, приведенные на этой странице, соответствуют набору сочетаний «Visual Studio», использующемуся в ReSharper по умолчанию. Подробнее о двух наборах сочетаний клавиш, доступных в ReSharper, вы можете узнать в его документации.