借助ReSharper,只要您处理通用Windows平台(UWP)、WPF、Silverlight或Windows Phone应用程序,就可以获得编辑XAML文件的附加辅助。 这包括实时代码质量分析、重构、代码生成和重新排列,以及快速的解决方案级导航。
ReSharper 的代码质量分析功能可帮助您快速定位并更正 XAML 文件中的错误。 让我们通过几个示例来了解它的工作原理。
比如,您正在开发一个只允许XAML 2006的WPF项目。 如果ReSharper遇到来自XAML 2009的泛型对象,它会将对象高亮显示为语言错误。 如果您在高亮显示上按Alt+Enter,ReSharper将显示一个快速修复建议,转而声明从System.Collections.Generic.List<string>
继承的类型。
在您应用快速修复时,ReSharper:
List
的新包装器类型。 TypeArguments
特性,将对象的类型更改为新的包装器类型,并在必要时插入新的命名空间指令。 如果您正在使用尚未声明的资源,则ReSharper错误高亮显示不会让您忘记这一点。
当您按Alt+Enter时,ReSharper会建议几个可能的位置来创建缺失的资源。
如果尚未声明生成的资源的类型,没关系:ReSharper将为您提供根据用法创建CLR类型或XAML类型(即,UserControl
)的选项。 选择两个选项之一会创建一个具有默认实现的文件。
在元素中意外放置注释时,ReSharper将高亮显示该注释并提供解决错误的选项。
在样式setter上定义TargetType
的情况下,ReSharper会检测类型限定符中的冗余并提供修复。
您可以在XAML标记中使用ReSharper的代码补全。 对 CamelHumps 的支持将帮助您快速添加特性:只需输入几个符号并按 Ctrl+Space 即可显示 ReSharper 的符号补全提供的相关建议列表。
如果您通过按 Ctrl+Alt+Space 调用智能补全,ReSharper 将根据您在代码中的位置提供其他可感知上下文的选项。 例如,在事件处理程序声明中调用智能补全将生成处理程序方法。
通过在特性中使用智能补全,您可以快速创建新资源(静态或动态)、绑定或对静态元素的引用。
ReSharper代码补全的另一个振奋人心的优势是,它显示了在Background
或OpacityMask
等特性中预期的画笔颜色。
ReSharper 还支持 XAML 中的导入符号补全。 这意味着,您可以从在您的解决方案中引用,但在当前文件中没有相应的命名空间导入指令的程序集补全类型。
当然,一旦您以这种方式使用ReSharper代码补全,将自动插入所需的命名空间导入指令。
或者,如果您在某个XAML文件中有一个由于某种原因未导入的类型,ReSharper将为您提供快速创建命名空间指令的选项。
ReSharper 的 Navigate To 菜单处理 XAML 代码元素的方式与在 C# 代码文件中的处理方式相同。 在符号声明或用法上按Alt+`可以打开一个包含多个可能的导航目标的菜单。
通过 Go to File Member 在 XAML 文件中导航的方式与在 C# 文件中的方式相同,有助于导航到具有特定类型、名称或键的元素。 同样,您无需输入整个名称 - 对小写CamelHumps的支持让您只输入wl
即可查找WatchList
。
在 XAML 文件中按 Ctrl+Alt+F7 时,您将获得所有相关文件的列表:例如,代码隐藏文件、当前 XAML 文件中引用的任何资源或控件中使用的图像。
Go to Declaration(F12)和 Ctrl + 点击导航在 XAML 文件中的工作方式与在普通 C# 代码文件中的工作方式相同。 例如,在按住Ctrl的同时,您可以将鼠标悬停在特定类的名称上。 ReSharper将为类名添加下划线,点击该链接将直接转到类定义。
此外,就像代码文件一样,File Structure 窗口显示 XAML 文件的结构,使您可以快速导航到您正在查找的代码元素。
您可以通过按 Shift + F12 查找特定 XAML 元素的用法,此操作将调用 Find Usages 命令。 ReSharper将显示元素的所有使用位置。
您也可以按 Shift+Alt+F11,此操作将高亮显示用法,让您快速概括了解特定符号在当前文件中的使用位置。
ReSharper 支持各种上下文操作,可简化 XML 语法的使用流程,并且可以在 XAML 中使用。 举几个例子,您可以使用其他名称替换标记名称,将特性转换为嵌套元素,或移除标记并将其子项提升一个级别。
还有十几个特定于XAML的上下文操作,允许您添加或者移除列或行定义,创建视图和资源,在不同类型的资源引用之间切换,将属性setter器提取到样式,等等。
由于XAML元素本质上等同于普通的类成员,因此适用于C#的一些重构也适用于XAML。 例如,您只需打开 Refactor This 菜单即可重命名或安全删除资源。
当您在XAML中对属性或方法的引用进行导航时,Refactor This菜单中显示的重构范围与您在C#或VB.NET代码中打开该菜单时的期望一致。
除了C#和VB.NET重构之外,还有一些特定于XAML的重构:
在XAML中,为多个控件定义内联样式,然后将它们重定位到样式定义是一种常见情况。 通过Extract Style重构,ReSharper使这项操作变得轻而易举。
为此重构显示的对话框可帮助您确定将属性提取到哪个资源(您可以选择现有资源或创建新资源),以及要提取哪些属性。
Extract Resource和Inline Resource重构允许您将几乎任何属性赋值(包括标记扩展中的属性赋值)移动到资源,反之亦然 - 从资源中获取定义并将其拼接到元素中。
本页面提供的所有键盘快捷键都在 ReSharper 的默认“Visual Studio”按键映射中。 有关 ReSharper 两种按键映射的详细信息,请参阅 ReSharper 文档。