`
ldb19890624
  • 浏览: 243813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

我的XAML编码规范

 
阅读更多

我的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>

结论


这可能并非完美的解决方案,但如果你遵循它的话,这是一个良好的开端,特别是在团队协作的时候。

分享到:
评论

相关推荐

    AduSkin编码规范1

    ### AduSkin编码规范知识点详解 #### 一、概述 AduSkin是一个专注于提供美观、易用、可定制UI组件的框架,适用于Windows平台上的WPF应用开发。为了确保项目的一致性和高质量,AduSkin制定了一套详细的编码规范。...

    XamlBrower.zip

    2. **高度可定制**:用户可以根据项目需求调整代码格式化规则,如缩进方式、空格数量、标签对齐等,以符合团队编码规范。 3. **效率提升**:自动格式化功能极大地减少了手动整理代码的时间,使开发者能更专注于逻辑...

    XamlStyler.VSPackage FOR VS2012 VS2013

    1. **自动格式化**:当开发者编写或编辑XAML代码时,XamlStyler会自动进行代码格式化,使代码更整洁、易读,遵循最佳编码实践。这包括缩进、换行、属性排序等。 2. **命名约定**:插件支持自定义或预设的命名规则,...

    XML实现多语言应用程序

    1. **编码**:确保所有XML文件都使用相同的字符编码,通常是UTF-8,以正确显示各种语言的特殊字符。 2. **格式规范**:遵循一致的命名规则和结构,便于管理和维护。例如,可以将所有语言的XML文件放在同一目录下,...

    微观博易 软件开发 面试题目 project 2 满分答案和代码

    1. **软件工程**:软件工程是系统化、规范化、可量化的方法来开发、操作和维护软件的过程。在这个Project 2中,可能会涉及需求分析、设计、编码、测试和维护等阶段,这些都是软件工程的基础。 2. **求职面试**:在...

    Kino.Toolkit.Wpf 是一组简单实用的 WPF 控件与工具,用于介绍自定义控件的入门

    同时,这个工具包通常会遵循良好的编码规范和设计模式,比如MVVM(Model-View-ViewModel),这有助于你理解和实践软件工程的最佳实践。 在实际应用中,Kino.Toolkit.Wpf的集成并不复杂,开发者可以通过NuGet包管理...

    ComponentArt.Silverlight.Demos.2009.1.2002 Source (2009年5月6日版本)

    此外,源代码中的注释和编程实践还能帮助提高编码规范和技巧。 总的来说,ComponentArt.Silverlight.Demos.2009.1.2002 Source是一个宝贵的教育资源,特别是对于那些希望在ASP.NET Web应用程序中使用Silverlight...

    silverlight图片滑动

    同时,考虑到可扩展性和可维护性,代码应遵循良好的设计原则和编码规范。 总的来说,"silverlight图片滑动"是一个集成了UI设计、动画制作、数据绑定和事件处理的项目,体现了Silverlight作为RIA(Rich Internet ...

    微软开源计算器源码

    微软开源计算器源码的发布,为开发者提供了一个深入了解操作系统组件实现的...同时,这也是一个向微软编码规范和最佳实践学习的好机会。对于那些希望在Windows平台上开发应用的人来说,这是一个不容错过的学习资源。

    开源项目图片浏览查看wpf编码

    通常,开源项目会遵循一定的代码规范和命名约定,以提高代码可读性和维护性。开发者可能会将业务逻辑、UI逻辑和数据模型分离,便于代码的复用和测试。 在"ImageViewer-master"这个压缩包中,我们可能找到以下文件和...

    silverlight toolkit中的主题(theme)

    这些主题通过改变控件的外观和感觉,使应用程序能够符合不同的用户界面偏好和设计规范。开发者可以根据自己的需求选择合适的主题,或者作为起点进行自定义设计。 首先,使用Silverlight Toolkit中的主题非常简单。...

    Windows Presentation Foundation慨述

    文档服务涵盖了XPS文档(XML Paper Specification)和开放包装规范(Open Packaging Conventions),使得创建和处理文档变得更加便捷。此外,WPF的用户界面服务包括应用服务、部署、控件、布局、数据绑定等,这些...

    C#反编译工具ILSpy2.3.2

    4. 自动格式化:ILSpy能够自动格式化反编译出的源代码,使其更符合编码规范,易于阅读。 5. 类视图:ILSpy提供了一个类视图窗口,用户可以通过这个窗口快速导航到感兴趣的类型和成员。 6. 资源查看器:除了源代码...

    CodeMaid.VS2019

    用户还可以自定义这些规则以适应团队的编码规范。 2. **重构工具**:此插件包含多种重构选项,如提取方法、重命名变量和转换条件语句。这使得代码更易于理解和维护,同时减少了出错的可能性。 3. **代码分析**:...

    多语言开发

    - **统一的开发标准**:制定清晰的编码规范和文档标准,确保不同语言之间的代码风格一致。 - **持续集成/持续部署(CI/CD)**:自动化测试和部署流程,减少人工干预,提升软件质量和发布速度。 - **跨语言框架和库的...

    哔哩:Windows 下的UWP应用

    开发者可能使用C#和XAML进行编码,并通过Visual Studio进行调试,同时利用WinRT API、Live Tiles和推送通知等特性提升应用的性能和用户体验。测试版本的发布则意味着用户有机会提前试用新功能并提供反馈,帮助开发者...

    VS插件集合

    - StyleCop:静态代码分析工具,确保代码遵循一定的编码规范。 - Productivity Pack:包含多个提高开发效率的小工具,如快速打开文件、多选项目等。 通过导入这些VS插件,开发者可以极大地提升工作效率,简化开发...

    Codematic2

    7. **代码质量检查**:集成代码分析功能,生成的代码遵循最佳实践和编码规范,避免潜在的错误和性能问题。 8. **版本控制集成**:与Git、SVN等版本控制系统无缝集成,方便代码生成后直接提交。 9. **用户界面设计*...

    wpf开发的各种数学公式显示

    `.editorconfig`文件用于定义代码编辑器的样式和规范,确保团队成员在编写代码时遵循一致的编码风格。`.gitignore`文件则指示Git版本控制系统忽略特定的文件或文件夹,防止它们被添加到版本控制中,例如,这里可能...

Global site tag (gtag.js) - Google Analytics