【问题标题】:Is there a way to comment out XAML that contains comments?有没有办法注释掉包含注释的 XAML?
【发布时间】:2010-12-17 21:27:33
【问题描述】:

我对 WPF 和使用 XAML 相当陌生。如果突出显示的部分已经包含一些 cmets,我无法在 Visual Studio 2010 中使用工具栏中的注释按钮选择一大块 XAML 并将其注释掉,这让我感到非常沮丧。

其他语言允许您毫无问题地将 cmets 嵌套在 cmets 中。有没有办法使用 Visual Studio 2010 注释掉 XAML 中的注释?

【问题讨论】:

  • 在带有 /**/ 风格 cmets 的旧 C 中,以及带有 {} 的旧 Pascal 中(不确定现代方言),嵌套 cmets 是一个问题。
  • 我更多地考虑使用 Visual Studio 中的评论/取消评论按钮。你的观点是有效的。
  • 我没有VS 2010,但是在2012中你可以简单地使用HTML类型 cmets。试试看。

标签: wpf visual-studio-2010 xaml


【解决方案1】:

不,没有办法在 XAML 中嵌套 cmets。

您可以在根元素上使用 mc:Ignorable 属性,任何带有该值前缀的属性或元素都将被忽略,例如:

<UserControl ...
   mc:Ignorable="i">

   <!-- Ignore Text attribute -->
   <TextBlock i:Text="Hello" />

   <!-- Ignore entire button -->
   <i:Button>
   </i:Button>

</UserControl>

请注意,混合将 mc:Ignorable 属性值设置为“d”,因此您需要使用例如mc:Ignorable="di"

【讨论】:

  • 我实际上并不经常这样做,但有时当我在模板中尝试不同的处理方式时,我不想删除工作模板来尝试新方法。我仍然在使用模板,只是看看我能做什么。
  • 这工作正常,除了 ResourceDictionary 文件。他们似乎没有那个属性。
  • “我不想删除工作模板来尝试新方法” - 听起来您没有使用SCM。除了许多其他功能之外,SCM 还可以让您在不破坏任何东西的情况下随意玩耍。
  • 为什么很难理解为什么有人要注释掉 xaml?想要禁用代码而不删除它不是很常见吗?
  • 规范应该允许单行 cmets,如 C、BASIC 等,之前 DECADES 有。然后,IDE(就像 VS 已经使用 C# 一样,即使 C# 具有多行注释功能),即使将多行标记为注释,也要继续为每行添加更多的单行注释前缀。那是没有道理的。导致 ML 出错的可能性并不是不提供单行 cmets 的借口。任何允许单行(甚至多行)cmets 的编程语言都存在同样的问题。确保生成的代码仍然有效是编码人员的工作。
【解决方案2】:

很遗憾,当涉及到一个已经包含一些 XML 中注释掉的行的块时,注释功能并不比这更聪明。

使用正则表达式可以轻松解决这个问题:

  • 选择要注释掉的 XAML 代码块。
  • 单击 Visual Studio 工具栏中的评论按钮
  • 保持选中的已注释掉的文本块:
    • 打开查找/替换对话框(CTRL + SHIFT + H)
    • 在查找选项中,选择“使用常规 表达式”复选框。
    • 确保“查找范围:”组合框设置为 “选择”。
    • 在“查找”字段中,输入:\&lt;\!\-\-(.*)\-\-\&gt;
    • 在“替换”字段中,输入:--&gt;&lt;!--$1--&gt;&lt;!--
    • 点击“全部替换”按钮

这将在您的块中包含任何注释掉的行,开头为结束注释标记,结尾为开始注释标记,确保此注释前面的文本块有效,后面的文本块也是有效的。

要删除 cmets 并返回到您的原始 XAML 块,请先使用正则表达式,但使用相反的逻辑:

  • 查找字段:\-\-\&gt;\&lt;!\-\-(.*)\-\-\&gt;\&lt;\!\-\-
  • 替换字段:&lt;!--$1--&gt;

然后,保持选中 XAML 块,单击 Visual Studio 中的取消注释按钮。

注意:根据您使用的 Visual Studio 版本,正则表达式的语法可能会有所不同。我正在使用 VS 2012。以前的版本将使用花括号“{}”来隔离表达式,并使用反斜杠“\”在替换字段中使用它。现在,它分别是括号“()”和美元符号“$”。

【讨论】:

    【解决方案3】:

    选择评论块 点击 cntrl-K、control-c(与 C# 端用于注释代码块的快捷方式相同)。 设计师将移动您的评论标记以评论整个区块。

    cntrol-k, cntrol-u (Kode Uncomment) 将取消转换,使其再次成为实时 XAML 代码。这将删除所有评论标记,因此您必须再次重新评论您原来的 cmets。

    它并不完美,但它们是您可能已经知道的简单快捷方式。

    【讨论】:

      【解决方案4】:

      表达式混合中没有注释/取消注释按钮,如果您想尝试注释您的代码块,您可以手动在代码块的开头和结尾输入以下符号

      <!-- your code comes here..
      Next Line--> 
      

      查看下面的示例屏幕截图

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-02
        • 2014-12-11
        • 2010-12-09
        • 2020-09-10
        • 2010-09-12
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        相关资源
        最近更新 更多