XAML编辑工具

借助ReSharper,只要您处理通用Windows平台(UWP)、WPF、Silverlight或Windows Phone应用程序,就可以获得编辑XAML文件的附加辅助。 这包括实时代码质量分析、重构、代码生成和重新排列,以及快速的解决方案级导航。

代码质量分析

ReSharper 的代码质量分析功能可帮助您快速定位并更正 XAML 文件中的错误。 让我们通过几个示例来了解它的工作原理。

ReSharper会高亮显示XAML文件中的代码问题

示例1. XAML语言级错误

比如,您正在开发一个只允许XAML 2006的WPF项目。 如果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将高亮显示该注释并提供解决错误的选项。

修复XAMLd中的冗余类型限定符

示例4. 冗余类型限定符

在样式setter上定义TargetType的情况下,ReSharper会检测类型限定符中的冗余并提供修复。

ReSharper的智能补全生成事件处理程序方法 ReSharper的智能补全有助于选择正确的颜色 ReSharper的导入符号补全可帮助从尚未在XAML文件中引用的命名空间中导入类型

扩展的XAML IntelliSense

您可以在XAML标记中使用ReSharper的代码补全。 对 CamelHumps 的支持将帮助您快速添加特性:只需输入几个符号并按 Ctrl+Space 即可显示 ReSharper 的符号补全提供的相关建议列表。

如果您通过按 Ctrl+Alt+Space 调用智能补全,ReSharper 将根据您在代码中的位置提供其他可感知上下文的选项。 例如,在事件处理程序声明中调用智能补全将生成处理程序方法。

通过在特性中使用智能补全,您可以快速创建新资源(静态或动态)、绑定或对静态元素的引用。

ReSharper代码补全的另一个振奋人心的优势是,它显示了在BackgroundOpacityMask等特性中预期的画笔颜色。

ReSharper 还支持 XAML 中的导入符号补全。 这意味着,您可以从在您的解决方案中引用,但在当前文件中没有相应的命名空间导入指令的程序集补全类型。

当然,一旦您以这种方式使用ReSharper代码补全,将自动插入所需的命名空间导入指令。

或者,如果您在某个XAML文件中有一个由于某种原因未导入的类型,ReSharper将为您提供快速创建命名空间指令的选项。

从XAML代码中的符号导航 从XAML代码导航到相关文件 XAML文件的文件结构

导航和搜索

ReSharper 的 Navigate To 菜单处理 XAML 代码元素的方式与在 C# 代码文件中的处理方式相同。 在符号声明或用法上按Alt+`可以打开一个包含多个可能的导航目标的菜单。

通过 Go to File Member 在 XAML 文件中导航的方式与在 C# 文件中的方式相同,有助于导航到具有特定类型、名称或键的元素。 同样,您无需输入整个名称 - 对小写CamelHumps的支持让您只输入wl即可查找WatchList

在 XAML 文件中按 Ctrl+Alt+F7 时,您将获得所有相关文件的列表:例如,代码隐藏文件、当前 XAML 文件中引用的任何资源或控件中使用的图像。

Go to DeclarationF12)和 Ctrl + 点击导航在 XAML 文件中的工作方式与在普通 C# 代码文件中的工作方式相同。 例如,在按住Ctrl的同时,您可以将鼠标悬停在特定类的名称上。 ReSharper将为类名添加下划线,点击该链接将直接转到类定义。

此外,就像代码文件一样,File Structure 窗口显示 XAML 文件的结构,使您可以快速导航到您正在查找的代码元素。

您可以通过按 Shift + F12 查找特定 XAML 元素的用法,此操作将调用 Find Usages 命令。 ReSharper将显示元素的所有使用位置。

您也可以按 Shift+Alt+F11,此操作将高亮显示用法,让您快速概括了解特定符号在当前文件中的使用位置。

为依赖项属性调用模板 为依赖项属性调用模板

生成依赖项属性

创建依赖属性可能非常无聊。 这是 ReSharper 可以解决的另一个问题:它的代码模板引擎足够强大,可以让您创建细粒度的代码段,只需按几次键即可部署到依赖项属性中。 只需在编辑器中输入实时模板的名称 - 您可以获得一对属性和部署的相应依赖项属性,并且在您需要填写的所有占位符中提供智能代码补全。

类似地,您可以利用ReSharper部署附加属性,这些属性比常规依赖项属性更加繁琐。 部署实时模板后,您可以传递它的所有变量,并在适用的情况下使用ReSharper代码补全。

Although live templates for dependency property and attached property are not currently included in ReSharper out of the box, you can download and import them.

ReSharper在ASP.NET中的代码补全

XML和XAML编辑帮助程序

ReSharper 支持各种上下文操作,可简化 XML 语法的使用流程,并且可以在 XAML 中使用。 举几个例子,您可以使用其他名称替换标记名称,将特性转换为嵌套元素,或移除标记并将其子项提升一个级别。

还有十几个特定于XAML的上下文操作,允许您添加或者移除列或行定义,创建视图和资源,在不同类型的资源引用之间切换,将属性setter器提取到样式,等等。

提取XAML样式 提取XAML样式

重构XAML代码

由于XAML元素本质上等同于普通的类成员,因此适用于C#的一些重构也适用于XAML。 例如,您只需打开 Refactor This 菜单即可重命名或安全删除资源。

当您在XAML中对属性或方法的引用进行导航时,Refactor This菜单中显示的重构范围与您在C#或VB.NET代码中打开该菜单时的期望一致。

除了C#和VB.NET重构之外,还有一些特定于XAML的重构:

在XAML中,为多个控件定义内联样式,然后将它们重定位到样式定义是一种常见情况。 通过Extract Style重构,ReSharper使这项操作变得轻而易举。

为此重构显示的对话框可帮助您确定将属性提取到哪个资源(您可以选择现有资源或创建新资源),以及要提取哪些属性。

Extract ResourceInline Resource重构允许您将几乎任何属性赋值(包括标记扩展中的属性赋值)移动到资源,反之亦然 - 从资源中获取定义并将其拼接到元素中。

ReSharper帮助重新排列XAML代码

代码重新排列

使用 ReSharper 的代码重新排序功能,您可以在 XAML 文件内移动元素,甚至可以移动这些元素内的特性。 通过按Ctrl+Alt+Shift键和箭头键执行这两个操作。

使用特性时,这些组合键允许您在标记内移动特性,以便可以利用Left键和Right键更改特性的位置。 但是,如果按Up键和Down键,您的操作将影响整个标记。

Up键和Down键会将整个标记相对于其他标记移动。 如果您使用 Ctrl+Alt+Right 扩展选择以包含标记以及其中的所有内容,您也可以使用 Left 键和 Right 键实现相同操作,唯一的区别是这些组合也会“降级”您当前的选择,将其放入您遇到的任何标记内。

快捷键注释

本页面提供的所有键盘快捷键都在 ReSharper 的默认“Visual Studio”按键映射中。 有关 ReSharper 两种按键映射的详细信息,请参阅 ReSharper 文档