XAML格式化工具:XAML Styler

这篇具有很好参考价值的文章主要介绍了XAML格式化工具:XAML Styler。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XAML格式化的意义

在开发WPF应用过程中,编写XAML时需要手动去缩进或者换行,随着时间的推移或者参与开发的人增多,XAML文件内容的格式会越来越乱。要么属性全都写在一行,内容太宽一屏无法完整展现;要么属性单独占一行,难以直观的看清结构;另外xaml元素的属性无序,重要属性查找困难,手动维护属性使之规律有序也比较费时。

格式化XAML代码可以使代码布局整齐,减少冗余空格和换行符,使代码结构清晰、缩进一致。使代码更易于阅读和理解,开发人员能够更快速地编写和修改代码。此外,还可以确保整个项目中的代码风格一致,对于团队协作和代码维护非常重要。然而微软官方并未提供很好的XAML格式化方案,不过Visual Studio Marketplace中有个非常好用的插件XAML Styler。

安装配置XAML Styler

在Visual Studio的扩展管理窗口中,搜索XAML Styler下载安装后重启Visual Studio即可完成安装。在"工具"->"选项"中找到"XAML Styler"可以进行详细配置。每一项具体含义参见配置项说明
XAML格式化工具:XAML Styler
如果需要在XAML编辑器执行保存时自动格式化,需要把Format XAML on save设置为true。如果想手动格式化,则直接在XAML编辑器中右键菜单点击Format XAML或者使用快捷键进行格式化。
XAML格式化工具:XAML Styler

统一格式化标准

在团队开发中,即便所有的人都使用XAML Styler,也可能因个人习惯不同选择不同的设置,也会带来很多麻烦。针对这个问题,XAML Styler也提供了解决方案。

在项目的根目录创建一个名为"Settings.XamlStyler"的文件(不必引入到项目中),内容可参考Default Configuration,XAML Styler会根据这个文件而不是Visual Studio中的全局配置进行格式化,既解决了项目的统一格式化标准问题,也允许开发人员按照自己的习惯开发非团队项目。

"Settings.XamlStyler"配置项及注释如下,大家可根据自身习惯酌情修改

{
    "IndentSize": 4,  //缩进空格数,4【默认】
    "IndentWithTabs": false   //是否使用制表符进行缩进,false【默认】
    "AttributesTolerance": 2, //单行最大属性数,2【默认】,如果元素属性数不大于此数就不会换行
    "KeepFirstAttributeOnSameLine": false, //第一个属性是否与开始标记在同一行,false【默认】
    "MaxAttributeCharactersPerLine": 0, //多个属性大于多少个字符就该换行,0【默认】
    "MaxAttributesPerLine": 1, //大于几个属性就该换行,1【默认】
    "NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter", //属性不应该跨行中断的元素
    "SeparateByGroups": false, //是否应该按照属性的分组进行分行,false【默认】
    "AttributeIndentation": 0,  //属性缩进空格字符数(-1不缩进;0【默认】缩进4个空格;其它个数则指定)
    "AttributeIndentationStyle": 1, //属性缩进风格(0混合,视情况使用制表符和空格;1【默认】使用空格)
    "RemoveDesignTimeReferences":  false, //是否移除自动添加的控件和设计时引用内容,false【默认】
    "IgnoreDesignTimeReferencePrefix": false, //排序时是否忽略带有设计时引用命名空间前缀的属性,false【默认】
    "EnableAttributeReordering": true, //是否启用属性的自动排序,true【默认】
    /*属性排序和分组规则*/
    "AttributeOrderingRuleGroups": [
        "x:Class",
        "xmlns, xmlns:x",
        "xmlns:*",
        "x:Key, Key, x:Name, Name, x:Uid, Uid, Title",
        "Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom",
        "Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight",
        "Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex",
        "*:*, *",
        "PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint",
        "mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText",
        "Storyboard.*, From, To, Duration",
        "TargetType",
        "BasedOn"
    ],
    "FirstLineAttributes": "x:Name,Grid.Row,Grid.Column",  //应该在第一行的属性,例如x:Name 和x:Uid等等,None【默认】
    "OrderAttributesByName": true, //是否按照属性名称进行排序
    "PutEndingBracketOnNewLine": false, //结束括号是否独占一行,false【默认】
    "RemoveEndingTagOfEmptyElement": true, //是否移除空元素的结束标签,true【默认】
    "SpaceBeforeClosingSlash": true, //自闭合元素的末尾斜杠前是否要有空格,true【默认】
    "RootElementLineBreakRule": 0, //是否将根元素的属性分成多行(0【默认】;1始终;2从不)
    "ReorderVSM": 2, //是否重新排序visualstateManager(0未定义;1移到最前;2【默认】移到最后)
    "ReorderGridChildren": false, //是否重新排序Grid的子元素,false【默认】
    "ReorderCanvasChildren": false, //是否重新排序Canvas的子元素,false【默认】
    "ReorderSetters": 0, //是否重新排序Setter(0【默认】不排序;1按属性名;2按目标名;3先按目标名再按属性名)
    "FormatMarkupExtension": true, //是否格式化标记扩展的属性,true【默认】
    "NoNewLineMarkupExtensions": "x:Bind, Binding",     //始终放在一行上的标记扩展,"x:Bind, Binding"【默认】
    "ThicknessSeparator": 2, //Thickness类型的属性应该用哪种分隔符(0不格式化;1空格;2【默认】逗号)
    "ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin",     //被认定为Thickness的元素应该是哪些,"Margin, Padding, BorderThickness, ThumbnailClipMargin"【默认】
    "FormatOnSave": true, //是否在保存时进行格式化,true【默认】
    "CommentPadding": 2, //注释的间距应该是几个空格,2【默认】
}

部分属性配置选项

  • AttributeIndentationStyle
    • Mixed = 0 混合,视情况使用制表符和空格
    • Spaces = 1 【默认】使用空格
  • RootElementLineBreakRule
    • Default = 0 【默认】
    • Always = 1 始终
    • Never = 2 从不
  • ReorderVSM
    • None = 0 未定义
    • First = 1 移到最前
    • Last = 2 【默认】移到最后
  • ReorderSetters
    • None = 0 【默认】不排序
    • Property = 1 按属性名
    • TargetName = 2 按属性名
    • TargetNameThenProperty = 3 先按目标名再按属性名
  • ThicknessSeparator
    • None = 0 不格式化
    • Space = 1 空格
    • Comma = 2 【默认】逗号

如果对于上述配置中每一项的注释没有直观的感受,可以通过wiki查看每项配置对应代码格式化后的效果。文章来源地址https://www.toymoban.com/news/detail-633553.html

到了这里,关于XAML格式化工具:XAML Styler的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目前常用的在线格式化工具

    一、BeJson格式化工具 网址: 在线JSON校验格式化工具(Be JSON) 优点:工具多 缺点:广告多,界面设计较旧,拼凑的工具网站,界面风格差异较大不统一。         二、Robots2开发工具箱 网址: Robots2开发工具网站 优点:工具界面风格统一,界面整洁,有日常开发用到的工具

    2024年02月03日
    浏览(44)
  • 在线时间戳格式化转换工具

    在线时间戳格式化转换工具 本工具支持在时间和时间戳之间相互转换,默认时间参考的是服务器时间 Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIXtime),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起

    2024年02月15日
    浏览(45)
  • IDEA代码自动格式化工具

    在IDEA中,打开 IDEA 的设置,找到 Editor - General - Auto Import。勾选上 Add unambiguous imports on the fly Optimize imports on the fly (for current project) 设置方法如下: 1.打开设置 2.找到版本控制(Version Control),点击提交(Commit) 3.勾选Before Commit下的Reform code activate save actions on save – 在保存的时候激活

    2024年02月15日
    浏览(72)
  • 在VS中使用格式化工具

    官网地址: https://clang.llvm.org/ 最后更新时间:2023.8.25 这里以windows为例,使用的环境为VS。 下载地址: https://github.com/llvm 安装(自己选择安装路径) 在VS中设置LLVM的 clang-format.exe 路径 到这里我们需要理解clang-format.exe是一个格式化程序,它里面有一些格式化规则,我们现在需要

    2024年02月11日
    浏览(45)
  • Java工具类——json字符串格式化处理

    在我们拿到一团未经格式化的json字符串时,非常不方便查看,比如这样 因此随手写了个工具类用来格式化json。注意,原json字符串必须语法无误,并且不包含换行、空格、缩进等,否则会保留下来。 ok废话不多说上代码 运行后效果

    2024年01月17日
    浏览(50)
  • Python 代码格式化工具YAPF 0.17.0问世

    导读 YAPF 0.17.0 已发布,YAPF 是 Google 开源的一个用来格式化 Python 代码的工具。 目前用于 Python 的格式化程序(如 autopep8 和 pep8ify)都用于删除代码中的 lint 错误。这有很明显的局限性。YAPF 采用了不同的方法,基于 Daniel Jasper 开发的 “clang-format” 。从本质上来说,该算法取

    2024年02月05日
    浏览(85)
  • Java json 格式化小工具兼容转义 json 串

    封装了一个格式化 json 小工具,支持标准的 json 格式 和 经过后端编程语言如 java 转义后的 字符串 json 格式的格式化输出,代码如下: 我们看下两种 json 数据: 注意第一种使用 JSON 工具处理时,并不能正常解析,需要先转义才行,注意: 在 IDEA中 测试时不能直接将上面的内

    2024年02月07日
    浏览(50)
  • Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!

    你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。 本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频

    2024年02月06日
    浏览(81)
  • VSCode 配置 python 代码格式化工具(yapf,autopep8)

    需要注意的是,yapf的配置选项都是可选的,你可以根据自己的需要选择使用哪些选项。不过,使用太多选项可能会导致代码格式化的规则变得复杂,对代码的可读性有影响。因此,建议尽量使用最少的选项来保持代码的简洁性。 aggressive: 这个选项表示在格式化代码时使用更

    2024年02月09日
    浏览(90)
  • 【VS】visual studio 代码格式化工具--clang-format

    分别表示格式化选中代码与格式化文档。、 虽然现在的🆚022 已经内置了,但是大部分的流程都是一样的 就生成了.clang-format文件: 附.clang-format文件:

    2024年02月11日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包