在WPF中关闭标记的最佳实践

时间:2010-11-19 11:11:03

标签: c# .net wpf

我目前正在阅读C#2008中的 Pro WPF 这本书,我是WPF的新手。

我基本上对最佳实践有疑问,因为我想编写其他开发人员普遍接受的代码。

我在整本书中都看到,作者使用不同的方法来关闭不同目的的标签。我举个例子:

创建网格并定义行和列时,他总是编写与此类似的代码:

<Grid.ColumnDefinitions>
  <ColumnDefinition />
  <ColumnDefinition />
</Grid.ColumnDefinitions>

所以他关闭了标签内的标签“inline”,因为标签没有任何内容(我不确定内联是否是正确的措辞)

但是大多数其他地方,即使它没有像这样的内容,他也会设置一个结束标记

<TextBlock Text="{Binding Path=CategoryName}"></TextBlock>

我也看到,如果他在ColumnDefinition案例中定义任何属性,他也会像这样添加结束标记

<ColumnDefinition Width="Auto"></ColumnDefinition>

我的问题很简单。有没有理由这样写?我认为省略结束标签看起来更整洁,因为在所有情况下都没有内容。

这只是个人偏好的问题,还是有其他理由在两者之间切换。

4 个答案:

答案 0 :(得分:2)

这是个人偏好,因为代码是等效的。

然而,我可以看到

<TextBlock Text="{Binding Path=CategoryName}"></TextBlock>
如果该行最初写为:

,则会出现

<TextBlock Text="{Binding Path=CategoryName}">
    some other xaml
</TextBlock>

然后删除“其他xaml”(无论出于何种原因)

你应该做的是提出一个标准并坚持下去(你决定去哪里)。

答案 1 :(得分:1)

这更像是一个XML而不是WPF的东西,并且大多数并不重要,因为它们只是解析XML。一般情况下,虽然我建议您在没有任何子元素时始终使用“空元素”(&lt; tag /&gt;),因为它看起来更干净并且可以防止标记内容中出现任何意外的空格。

他可能只是偶然在书中不一致

答案 2 :(得分:1)

添加一个内部没有元素的控件时,最好通过自动关闭标记“/&gt;”而不是硬结束标记来关闭它。

例如。

<Label> 
    <Label.Content> 
        <TextBlock> 
            Test! 
        </TextBlock> 
    </Label.Content> 
</Label> 


<TextBlock Text={Binding Name}/>

答案 3 :(得分:0)

在我看来,这更像是个人品味。但话说回来,有些情况下你被迫使用<keyword></keyword>这样的符号。所以,除非被迫,否则你没有理由以某种方式写作。我将这个问题添加到我最喜欢的列表中,看看是否有任何特殊指南。