有没有一种方法可以注释掉包含注释的XAML代码?

31

我比较新于WPF和XAML。我很沮丧在Visual Studio 2010中使用工具栏中的注释按钮注释一部分XAML时,如果已经包含一些注释,就无法选择它。

其他语言允许您嵌套注释,没有问题。是否有办法在Visual Studio 2010中使用XAML注释掉注释?


在旧版的C语言中,使用/**/风格的注释,在旧版的Pascal语言中,使用{}风格的注释(不确定现代方言是否仍然如此),嵌套注释是一个问题。 - Vlad
我更倾向于使用Visual Studio中的注释/取消注释按钮。不过你的观点也是有道理的。 - tmoltzan
我没有VS 2010,但是在2012中,您可以简单地使用HTML类型的<!-- content to comment out -->注释。试试看。 - Maz T
4个回答

30

不,XAML中没有嵌套评论的方法。

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

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

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

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

</UserControl>

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


6
我其实并不经常这样做,但有时在尝试模板中的不同操作方式时,我不想删除一个有效的模板来尝试新方法。我仍然会花很多时间探索模板,看看我能做些什么。 - tmoltzan
1
这个工作很好,除了ResourceDictionary文件。它们似乎没有那个属性。 - Dan Bailiff
1
“我不想删除一个可用的模板来尝试新方法” - 这听起来像你没有使用软件配置管理。除了其他许多功能外,SCM允许您进行尝试,而不会破坏现有内容。 - IInspectable
4
为什么有人想要注释掉XAML代码会很难理解?想要禁用代码而不删除它不是很常见吗? - Kyle Delaney
规范应该允许像C、BASIC等语言数十年前就已经支持的单行注释。然后,IDE(例如VS已经针对C#实现了多行注释功能)即使多行被标记为注释,也会在每行添加更多的单行注释前缀。这是显而易见的。结果可能出现错误的可能性不是不提供单行注释的借口。任何允许单行(甚至多行)注释的编程语言都存在同样的问题。程序员的工作是确保生成的代码仍然有效。 - Tom

5
很不幸的是,当涉及到已包含一些XML注释行的代码块时,评论功能并不比这更智能。对于这个问题,一个相当简单的解决方法可以是使用正则表达式:
  • 选择要注释的XAML代码块。
  • 从Visual Studio工具栏中点击注释按钮。
  • 在保持选定的注释文本块的情况下:
    • 打开查找/替换对话框(CTRL + SHIFT + H)。
    • 在“搜索选项”中,选中“使用正则表达式”复选框。
    • 确保“查找位置:”组合框设为“选择”。
    • 在“查找”字段中输入:\<\!\-\-(.*)\-\-\>
    • 在“替换”字段中输入:--><!--$1--><!--
    • 点击“全部替换”按钮。
这将在你的代码块中用结束评论标记包装任何被注释的行,在其前面和后面都有开头的注释标记,确保该注释之前和之后的文本块都是有效的。

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

  • 查找字段:\-\-\>\<!\-\-(.*)\-\-\>\<\!\-\-
  • 替换字段:<!--$1-->
然后,保持XAML块已选定,从Visual Studio中点击取消注释按钮。 注意:根据您使用的Visual Studio版本不同,正则表达式的语法可能会有所不同。我使用的是VS 2012。以前的版本将使用花括号“{}”来隔离表达式,并使用反斜杠“\”在替换字段中使用它。现在,分别是括号“()”和美元符号“$”。

1
请选择注释块 按下ctrl-K,ctrl-c(与C#端注释代码块的快捷方式相同)。 设计师将移动您的注释标记以注释整个块。
ctrl-k,ctrl-u(Kode Uncomment)将取消注释并将其恢复为实时的XAML代码。这会删除所有注释标记,因此您可能需要重新注释原始注释。
虽然不完美,但它们是您可能已经知道的简单快捷方式。

0

在Expression Blend中没有注释和取消注释的按钮,如果您想尝试对代码块进行注释,可以手动在代码块的开头和结尾处输入以下符号

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

请参见下面的样例截图。

See a sample screenshot below


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接