2010-11-19 71 views
3

我正在阅读本书中的Pro WPF中的C#2008,我是WPF的新手。在WPF中关闭标记的最佳做法

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

我在整本书中看到,作者使用不同的方式关闭标签以满足不同的目的。我举一个例子:

当创建一个网格,确定的行和列,他总是写这样的代码与此类似:

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

于是,他关闭标签里的标签“内联”因为标签不具有任何内容(我不知道如果在线是这个正确的写法)

但大多数其他地方,他会放一结束标签,哪怕是这样的

<TextBlock Text="{Binding Path=CategoryName}"></TextBlock> 
没有内容

我也看到,如果他在ColumnDefinition情况下定义的任何属性,他也将添加结束标记这样

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

我的问题很简单。有没有任何理由像这样写?我认为忽略结束标记看起来更加整齐,因为在所有情况下都没有内容。

所以这只是个人喜好的问题,或者是否有任何其他理由在两者之间切换。

+0

很难在这里挑选一个答案家伙,但似乎所有人都认为这只是个人喜好。我标记了我最喜欢的一个:)谢谢你的努力。 – 2010-11-19 14:09:46

回答

1

这比WPF的东西更像是一件XML事物,大部分无关紧要,因为它们只是解析XML。一般来说,虽然我建议始终使用“空元素”(<标记/ >),因为它们看起来都很干净,并且可以防止标记内容中出现意外的空白。

他可能意外

0

在我看来,这更多的是个人品味。但话虽如此,有些情况下您不得不使用符号<keyword></keyword>。所以,除非被迫,否则没有理由为什么你应该以某种方式写作。我将这个问题添加到我最喜欢的列表中,看看是否有任何特殊的指导方针。

+0

在哪种情况下你不得不使用这种类型的语法? – 2010-11-19 12:02:52

+0

一个简单的例子就是一个Grid。网格内可以有多个控件,但正如您所看到的那样...将其作为自闭标签编写,不起作用。 – 2010-11-19 14:42:01

2

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

不过,我可以看到,

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

会来样,如果该行最初写成:

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

但随后的“其他XAML”被删除(无论何种原因)

你应该做的是拿出一个标准,坚持下去(你决定去哪儿)。

0

在书中只是不一致当添加具有内没有元素,更好地控制通过自闭标签来关闭它“/>”,而不是硬关闭标签。

例如。

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


<TextBlock Text={Binding Name}/>