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

Posted

技术标签:

【中文标题】如何在 WPF 中的 Xaml 文件中添加注释?【英文标题】:How to add comments into a Xaml file in WPF? 【发布时间】:2011-12-16 19:48:55 【问题描述】:

我使用了我在网上找到的这种语法,但它会引发错误:

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

'名称不能以'

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢,我可以把它放在哪里?我需要将它们放在显示我对代码添加的某些地方。 根据我的示例,您需要将它们放在您已更改内容的标签旁边。您将无法从字面上将它们放在您在标签内添加的属性旁边。这是自动解析 XAML 并根据您的 cmets 执行某些操作所必需的,还是只是为了让其他人看到您所做的更改? 你把它们放在 XML 标签的外面。 /> 。如果你回到你的代码,你会看到你让他们收到错误消息的地方是在一个多行标签内。 虽然这个答案最适合我,但 User500099 给出了 Joan 问题的准确答案。【参考方案2】:

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Ø”

【讨论】:

由于 XAML 是一种特殊化 XML(它是 SGML 的一种特殊化),您会认为 -- SGML comment -- 样式适用于内部标记 cmets。但是不,99.44% 的 XAML 解析器不接受 SGML in-tag cmets。 这是最有用的答案! 我认为@Joan Venge 的问题是如何“暂时删除代码”而不是“为人类读者添加信息”。【参考方案3】:

您不能在 xml 标签内插入 cmets。

不好

<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 -->

【讨论】:

@kenny:那条评论太陈词滥调了... 将任何编程语言都基于 XML 有点糟糕,但至少 XAML 有很好的意义尝试使所有内容都尽可能地具有声明性,这适合 XML 模型。 @kenny a: xaml 不是一种编程语言 - 它是一种标记语言和/或序列化格式,具体取决于您如何看待它...和 ​​b :该限制不是 xaml 之一 - 它是 xml 之一。 我了解 XAML 的局限性在于它基于 XML。因此,XML 是一种二流编程/标记语言。这样更好吗? >XML 是一种编程语言...什么? 有一天,世界将停止将 html/XML/等称为编程语言。今天不行。【参考方案4】:

只是一个提示:

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

【讨论】:

像往常一样编程时一直使用这个,但是当我进入 XAML 设计器时,我没有想到这个。工作正常。 这仅在您位于标签定义之外时有效。 "content" 有效," > content" 无效。我试图在多行上注释掉一些属性,它给出了错误。 为了清楚起见,在 Visual Studio 201 中,这指的是 Edit.CommentSelectionEdit.UncommentSelection 命令。【参考方案5】:

您不能将 cmets 放在 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"/>

【讨论】:

【参考方案6】:

对于任何学习这些东西的人来说,cmets 更为重要,因此借鉴 Xak Tacit 的想法 (来自 User500099 的 link)对于 Single Property cmets,将其添加到 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>

【讨论】:

以上是关于如何在 WPF 中的 Xaml 文件中添加注释?的主要内容,如果未能解决你的问题,请参考以下文章

wpf中,如何引用其他xaml文件中的Resources

wpf开发中 xaml 添加名称空间

WPF -- Generic.xaml文件报错

WPF -- Generic.xaml文件报错

WPF 中.XAML文件如何读取资源文件?

如何从 C# WPF 中的嵌入字体将字体文件添加到 Stimulsoft 报告