有没有办法注释掉包含注释的XAML?

tmo*_*zan 26 wpf xaml visual-studio-2010

我是WPF的新手并使用XAML.如果突出显示的部分已经包含一些注释,我无法选择一大块XAML并在Visual Studio 2010中使用工具栏中的注释按钮对其进行注释,这让我非常沮丧.

其他语言允许您在注释中嵌套注释而没有任何问题.有没有办法使用Visual Studio 2010在XAML中注释掉评论?

dev*_*tal 24

不,没有办法在XAML中嵌套注释.

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

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

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

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

</UserControl>
Run Code Online (Sandbox Code Playgroud)

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

我不确定你为什么这么多评论XAML内容?

  • 我实际上并不经常这样做,但有时当我在模板中尝试不同的方式时,我不想删除工作模板来尝试新的方法.我仍然在模板上四处看看我能做些什么. (5认同)
  • 为什么很难理解为什么有人想要评论xaml?想要在不删除代码的情况下禁用代码是不常见的? (4认同)

Lou*_*uis 5

非常不幸的是,当涉及到已经包含XML中一些注释掉的行的块时,注释功能并不比这更聪明.

这个问题的一个相当轻松的解决方法是使用正则表达式:

  • 选择要注释掉的XAML代码块.
  • 单击Visual Studio工具栏中的注释按钮
  • 保留已注释的文本块:
    • 打开"查找/替换"对话框(CTRL + SHIFT + H)
    • 在"查找选项"中,选中"使用正则表达式"复选框.
    • 确保"Look In:"组合框设置为"Selection".
    • 在"查找"字段中,输入: \<\!\-\-(.*)\-\-\>
    • 在"替换"字段中,输入: --><!--$1--><!--
    • 单击"全部替换"按钮

这将使用开头的结束注释标记和结尾处的开始注释标记来包装块中任何注释掉的行,确保此注释前面的文本块有效,并且后面的文本块也是有效的.

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

  • 查找字段: \-\-\>\<!\-\-(.*)\-\-\>\<\!\-\-
  • 替换字段:<!--$1-->

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

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