如何在WPF中将注释添加到Xaml文件中?


76

我在网上发现时使用了以下语法,但是会引发错误:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib"

'名称不能以'<'字符开头,十六进制值0x3C。第4行,位置5。XML无效。

Answers:


85

我假设那些XAML名称空间声明在控件的父标记中?您不能将评论放在另一个标签内。除此之外,您使用的语法是正确的。

<UserControl xmlns="...">
    <!-- Here's a valid comment. Notice it's outside the <UserControl> tag's braces -->
    [..snip..]
</UserControl>

1
谢谢,我可以放在哪里?我需要将它们放在某些地方,以显示对代码的添加。
Joan Venge

按照我的示例,您需要将它们放置在您更改了内容的标签旁边。您将无法从字面上将它们放在标签内添加的属性旁边。这将是需要进行自动解析XAML并根据您的评论进行操作的内容,还是仅是让其他人查看您所做的更改?
丹J

1
您将它们放在XML标记的外部。<sometag <!-不在这里-> />。如果返回到代码,您会看到放置错误消息的位置位于多行标记内。
Tormod

32

由Laurent Bugnion找到了一个不错的解决方案,它看起来像这样:

<UserControl xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:comment="Tag to add comments"
             mc:Ignorable="d comment" d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Button Width="100"
                comment:Width="example comment on Width, will be ignored......">
        </Button>
    </Grid>
</UserControl>

这是链接:http : //blog.galasoft.ch/posts/2010/02/quick-tip-commenting-out-properties-in-xaml/

链接上的评论者为忽略前缀提供了额外的字符,而不是突出显示:

mc:Ignorable=”ØignoreØ”

3
由于XAML是一种特殊化的XML(这是SGML的一种特殊化),因此您会认为该-- SGML comment --样式适用于内部标记注释。但是,不,有99.44%的XAML解析器不接受SGML标签内注释。
杰西·奇斯霍尔姆

这是最有用的答案!
JF 2012年

3
我认为@Joan Venge的问题是如何“临时删除代码”而不是“为人类读者添加信息”。
雷阳

27

您不能在xml标记内插入注释。

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib">

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib">
<!-- Cool comment -->

8
@kenny:这段评论很旧,很冗长...以XML为基础的任何编程语言都是可笑的,但是至少XAML具有很好的意义,试图使一切都尽可能地具有声明性,这与XML模型相符。
Merlyn Morgan-Graham

3
@kenny a:xaml不是一种编程语言-它是一种标记语言和/或序列化格式,具体取决于您如何看待...... b:该限制不是xaml之一-它是xml之一。
马克·格雷韦尔

6
我了解XAML的局限性是它基于XML。因此,XML是第二流的编程/标记语言。那个更好吗?
肯尼,

1
> XML是一种编程语言...是什么?
rr-

有一天,世界将不再将HTML / XML / etal称为编程语言。今天不行。
rw-nandemo

14

提示:

在Visual Studio进行评论一文中,您可以突出显示要注释的文本,然后用按Ctrl + K,然后按Ctrl + C。取消注释,你可以使用Ctrl键+ K,然后按Ctrl + U


1
像往常一样进行编程时,总是使用这种方法,但是当我进入XAML设计器时,我却没有想到这一点。工作正常。
Matthis Kohli

仅当您在标签定义之外时,此方法才有效。“ <x> <!-comment->内容</ x>”有效,“ <x <!-comment->>内容</ x>”不起作用。我试图注释掉多行上的一些属性,它给出了错误。
伊尔玛兹·杜尔玛兹(YılmazDurmaz)

0

您不能在UWP XAML标记内添加注释。您的语法正确。

去做:

<xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"/>
<!-- Cool comment -->

请勿做:

<xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    <!-- Cool comment -->
xmlns:System="clr-namespace:System;assembly=mscorlib"/>

-1

对于学习这些东西的人来说,注释更为重要,因此请借鉴Xak Tacit的想法
(来自User500099的链接)获取“单个属性”注释,然后将其添加到XAML代码块的顶部:

<!--Comments Allowed With Markup Compatibility (mc) In XAML!
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ØignoreØ="http://www.galasoft.ch/ignore"
    mc:Ignorable="ØignoreØ"
    Usage in property:
ØignoreØ:AttributeToIgnore="Text Of AttributeToIgnore"-->

然后在代码块中

<Application FooApp:Class="Foo.App"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ØignoreØ="http://www.galasoft.ch/ignore"
mc:Ignorable="ØignoreØ"
...

AttributeNotToIgnore="TextNotToIgnore"
...

...
ØignoreØ:IgnoreThisAttribute="IgnoreThatText"
...   
>
</Application>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.