我目前正在阅读C#2008中的 Pro WPF 这本书,我是WPF的新手。
我基本上对最佳实践有疑问,因为我想编写其他开发人员普遍接受的代码。
我在整本书中都看到,作者使用不同的方法来关闭不同目的的标签。我举个例子:
创建网格并定义行和列时,他总是编写与此类似的代码:
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
所以他关闭了标签内的标签“inline”,因为标签没有任何内容(我不确定内联是否是正确的措辞)
但是大多数其他地方,即使它没有像这样的内容,他也会设置一个结束标记
<TextBlock Text="{Binding Path=CategoryName}"></TextBlock>
我也看到,如果他在ColumnDefinition
案例中定义任何属性,他也会像这样添加结束标记
<ColumnDefinition Width="Auto"></ColumnDefinition>
我的问题很简单。有没有理由这样写?我认为省略结束标签看起来更整洁,因为在所有情况下都没有内容。
这只是个人偏好的问题,还是有其他理由在两者之间切换。
答案 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>
这样的符号。所以,除非被迫,否则你没有理由以某种方式写作。我将这个问题添加到我最喜欢的列表中,看看是否有任何特殊指南。