ReSharper Help

Refactorings for XAML

In XAML, ReSharper supports the Main Set of Refactorings, which are available for C# and Visual Basic .NET code inside XAML files, as well as the Localization Refactorings, which are available for resource usages. There are also some refactorings that are specific to XAML:

To perform a refactoring

  1. Set your caret at a symbol, select a code fragment that you want to refactor, or select an item in a tool window.
  2. Do one of the following:
    • On the main menu, choose ReSharper | Refactor, and then select a desired refactoring.
    • In the editor, File Structure window, or other ReSharper window, right-click the item you want to transform, choose Refactor from the context menu, and then select the required refactoring.  
    • On the main menu, choose  ReSharper | Refactor | Refactor This, or press Ctrl+Shift+R to display the list of applicable refactorings, and select one of them. You can also choose Refactor This in the context menu of a selection.
    • If a refactoring could fix a code issue that ReSharper detects and highlights in the editor, the corresponding action indicator Coding_Assistance__Context_Actions__icon_refactor appears to the left of the code issue. You can click on this indicator or press Alt+Enter to check the suggested refactoring and apply if if necessary.
    • Use default keyboard shortcuts assigned to specific refactorings, or assign custom shortcuts to your favorite refactorings.
  3. If the selected refactoring requires user input, the refactoring wizard opens. Note that the wizard's dialog boxes are not modal, so you can edit the code while the wizard is open.
    To roll back refactoring actions, the wizard provides the option  To enable Undo, open all files with changes for editing. If you select this option, ReSharper opens all modified files in new editor tabs and enables you to roll the refactoring back. In this case, you will need to save the changes yourself. If this option is not selected, ReSharper saves modified files automatically, without opening them.
  4. If a refactoring operation would cause code conflicts (such as duplicate names, visibility conflicts, etc.), the wizard displays the list of conflicts on the last step, before you apply the refactoring. For some conflicts, the wizard can also suggest quick-fixes. For more information, see Resolving Conflicts in Refactorings.

Some refactorings are available immediately after you modify code in the editor. For more information, see Inplace Refactorings

Extract XAML Resource

If some values are repeatedly used, it makes sense to move such values to resources and replace all their occurrences with resource references. To do this, apply the Extract XAML Resource refactoring.

ReSharper_by_Language__XAML__Refactorings__Extract_Resource_01
The Extract XAML Resource dialog box opens, where you can specify the name for a new resource, the visibility scope, and whether the resource is referenced statically or dynamically.
ReSharper_by_Language__XAML__Refactorings__Extract_Resource_02
If no conflicts are found, ReSharper adds a new resource. Otherwise, ReSharper prompts you to resolve conflicts.

Extract XAML Style

To create a new style based on existing properties and their values, use the Extract XAML Style refactoring.

ReSharper_by_Language__XAML__Refactorings__Extract_Style_01
The Extract XAML Style dialog box opens, where you can specify whether to create a new style or use an existing one as well as specify what properties to extract.
ReSharper_by_Language__XAML__Refactorings__Extract_Style_02
If no conflicts are found, ReSharper creates a new style. Otherwise, ReSharper prompts you to resolve conflicts.

Inline XAML Resource

This refactoring allows moving styles and resources from separate declarations to inline declarations in attributes of the corresponding controls:

Inline XAML Resource refactoring

See Also

Last modified: 30 June 2015