代码之家  ›  专栏  ›  技术社区  ›  Øyvind Bråthen

WPF中结束标记的最佳实践

  •  4
  • Øyvind Bråthen  · 技术社区  · 15 年前

    我正在读这本书 2008年职业WPF ,我是WPF的新手。

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

    我在整本书中看到,作者为了不同的目的使用不同的结束标记方式。我举个例子:

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

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

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

    但在其他地方,他会贴上结束语,即使没有这样的内容

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

    我也看到,如果他在 ColumnDefinition 他还会像这样加上结束标记

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

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

    那么,这仅仅是个人喜好的问题,还是有其他理由在两者之间转换呢。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Homde    15 年前

    与WPF相比,这更多的是XML的事情,而且大部分都无关紧要,因为它们只是解析XML。一般来说,我建议在没有任何子元素的情况下始终使用“空元素”(<tag/>),因为它看起来更干净,并且可以防止标记内容中出现意外的空白。

    他可能只是偶然地在书中前后矛盾

        2
  •  2
  •   ChrisF    15 年前

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

    但是,我可以看到

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

    如果该行最初写为:

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

    但随后“其他xaml”被删除(无论出于什么原因)

    你应该做的是制定一个标准并坚持下去(无论你选择哪种方式)。

        3
  •  1
  •   Kishore Kumar    15 年前

    当添加的控件中没有元素时,最好使用自动关闭标记/>而不是硬关闭标记来关闭它。

    如。

    <Label> 
        <Label.Content> 
            <TextBlock> 
                Test! 
            </TextBlock> 
        </Label.Content> 
    </Label> 
    
    
    <TextBlock Text={Binding Name}/>
    
        4
  •  0
  •   Rahul Soni    15 年前

    在我看来,这更像是一种个人品味。不过,在有些情况下,你不得不使用如下符号 <keyword></keyword> . 所以,除非迫不得已,否则你没有理由用这种或那种方式写作。我将把这个问题添加到我最喜欢的列表中,看看是否有什么特别的指导原则。