我一向比较喜欢用On-前缀加事件名称的命名方式,因为这样方便查找。但VisualStudio默认给的就是第三种,即“变量名+下划线+事件名称”的命名方式。这也很让人困扰,不过反正不是给别人看的,随意些也无所谓了。
3. 一些想法,关于XAML元素的命名我不记得有在哪里见过XAML上元素命名的规范(只看到),总之就是要符合C#的的通用命名规范。我个人建议XAML上元素使用PascalCasing,原因如下:
保持统一,基本上XAML中所有标签都使用PascalCasing。
UWP默认控件模板也使用PascalCasing,下面是UWP和WPF中ScrollViewer ControlTemplate的对比:
<!--UWP--> <ScrollContentPresenter x:Name="ScrollContentPresenter" Grid.RowSpan="2" Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="{TemplateBinding Padding}" /> <Grid Grid.RowSpan="2" Grid.ColumnSpan="2" /> <ScrollBar x:Name="VerticalScrollBar" Grid.Column="1" IsTabStop="False" Maximum="{TemplateBinding ScrollableHeight}" Orientation="Vertical" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{TemplateBinding VerticalOffset}" ViewportSize="{TemplateBinding ViewportHeight}" HorizontalAlignment="Right" /> <ScrollBar x:Name="HorizontalScrollBar" IsTabStop="False" Maximum="{TemplateBinding ScrollableWidth}" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{TemplateBinding HorizontalOffset}" ViewportSize="{TemplateBinding ViewportWidth}" /> <Border x:Name="ScrollBarSeparator" Grid.Row="1" Grid.Column="1" Opacity="0" Background="{ThemeResource ScrollViewerScrollBarSeparatorBackground}" /> <!--WPF--> <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="0" /> <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Grid.Row="0" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" /> <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" />在WPF中TemplatePart的命名常会使用PART_前缀,这种古老的习惯现在还常常可以见到。Blend for VisualStudio已经移除“部件”窗口,使用PART_前缀可以标识控件模板中的TemplatePart,基于这种理由也可以接受这种命名方式。
4. 结语虽然很古老,但我还是把这本书推荐给初学者。docs.microsoft.com上有Framework Design Guidelines的文档,但比书上精简了很多,而且没有来自微软技术大师的评注,还是书好看,可惜09年出了第二版以来再没有更新过,里面一些规范也已经过时(如花括号的用法)。
VisualStudio有很多工具可以用于规范代码,好代码是管出来的——.Net中的代码规范工具及使用 这篇文章是很好的参考。也可以参考dotnet core 编程规范,林德熙(lindexi)的博客里有它的翻译。