我的XAML编码规范
作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs去年,我们建立了自己的C#编码规范,我说服同事遵循我写的编码规范。或许我是一个偏执狂吧,如果我看到有人不遵守我写的编码规范,而是去修改它,我可能通宵都睡不着。
借助Visual Studio的优秀插件ReSharper,可以很轻松地按照规则对代码进行格式化。你只需按下Ctrl-E / Ctrl-C,就可以对代码文档进行格式化。ReSharper是Visual Studio必备的工具。(图1)

自Windows Phone平台发布的两年以来,我一直使用XAML语言设计用户界面。查看C#的编码习惯是很容易的,但是对于XAML,就很困难了。
下面是Windows存储网格应用项目的例子:
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="7,7,0,0">
<Button
AutomationProperties.Name="Group Title"
Click="Header_Click"
Style="{StaticResource TextPrimaryButtonStyle}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
<TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
首先,没有空行。其次,按钮的属性在不同的行。而对于TextBlock元素,属性却在同一行,且没有任何顺序。
在过了很长一段时间后,我编写了自己的XAML编码规范。其中一个原因是,我不喜欢使用"属性"窗口,因为它很难有一个全面的属性设置,而不是设置为默认。(图2)

我的编码规范可简述为以下5点:
1 元素之间放入空行。
不要担心空行太多,它会使代码更易读。
<Grid Height="250"
VerticalAlignment="Top">
<Image Source="{Binding FeatureArticle1.Thumbnail}"
Style="{StaticResource ImageThumbnailStyle}" />
<StackPanel Style="{StaticResource StackPanelSummaryStyle}">
<TextBlock FontSize="22"
Style="{StaticResource TextBlockAuthorStyle}"
Text="{Binding FeatureArticle1.Author}" />
<TextBlock FontSize="26"
Height="70"
Style="{StaticResource TextBlockSummaryStyle}"
Text="{Binding FeatureArticle1.Title}" />
</StackPanel>
</Grid>
但是只有Grid.ColumnDefinition和Grid.RowDefinitions例外,因为它们只有一行属性。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="200" />
<RowDefinition Height="140" />
</Grid.RowDefinitions>
2 每个属性放一行。
<TextBlock FontWeight="Bold"
Foreground="White"
HorizontalAlignment="Right"
Margin="0,0,12,0"
Text="{Binding ArticlesCountText}"
TextWrapping="Wrap" />
3 属性按字母表排序。
<Image Source="/Assets/Shares/NeutralImage.png"
Height="125"
HorizontalAlignment="Center"
Width="125"
Stretch="UniformToFill"
VerticalAlignment="Center" />
有人说,高度Height和宽度Width应该放在一起,但作者还是喜欢按字母表顺序对属性排序。作者认为这更容易检查是否有属性设置漏了。
4 把附加属性放在起始位置并以字母表顺序放置。
<Button Grid.Column="1"
Grid.Row="2"
Command="{Binding ShowWriterCommand}"
CommandParameter="{Binding WriterAshley}"
Style="{StaticResource HubTileButtonStyle}" />
5 样式的定义可以不用那么严格。
当使用Expression Blend创建样式时,作者倾向于留下更大的空间,减少限制。这样的话,会节省很多时间。
<Style x:Key="GridFeatureStyle"
TargetType="Grid">
<Setter Property="Height"
Value="194" />
<Setter Property="VerticalAlignment"
Value="Top" />
<Setter Property="Width"
Value="194" />
</Style>
结论
这可能并非完美的解决方案,但如果你遵循它的话,这是一个良好的开端,特别是在团队协作的时候。
分享到:
相关推荐
marlett_01_0109
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
stassar_3cd_01_0716
malpass_02_0907
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matsumoto_01_1107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
代码
大模型创业者手册-法务与产品合规篇.pdf
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
指标体系数据开发
半导体三极管β值测量仪的设计与制作
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
本文将带你深入了解如何使用OpenCV库实现图片拼接技术,打造令人惊叹的全景图像。通过清晰的步骤讲解和代码示例
nicholl_01_0508
lim_3ck_04_0719
DeepSeek入门宝典-个人使用篇.pdf