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代码补全。

虽然 ReSharper 原生不包含依赖项属性和附加属性的实时模板,但您可以下载导入这些模板。

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 文档