web-dev-qa-db-ja.com

コメントを含むXAMLをコメント化する方法はありますか?

私はWPFをかなり初めて使用し、XAMLを使用しています。強調表示されたセクションにコメントが既に含まれている場合、XAMLのチャンクを選択して、ツールバーのコメントボタンを使用してVisual Studio 2010でコメント化できないことに本当にイライラします。

他の言語では、コメントの内側に問題なくコメントをネストできます。 Visual Studio 2010を使用してXAMLでコメントをコメント化する方法はありますか?

27
tmoltzan

いいえ、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"

24
devdigital

XMLのコメント化された行が既にいくつか含まれているブロックに関しては、コメント機能がこれより賢くないのは非常に残念です。

この問題のかなり簡単な回避策は、正規表現を使用することです。

  • コメントアウトするXAMLコードのブロックを選択します。
  • Visual Studioツールバーからコメントボタンをクリックします。
  • コメントアウトしたテキストブロックを選択したままにします:
    • [検索/置換]ダイアログボックスを開く(CTRL + SHIFT + H)
    • [検索オプション]で、[正規表現を使用する]チェックボックスをオンにします。
    • [探す場所]コンボボックスが[選択]に設定されていることを確認します。
    • 「検索」フィールドに次のように入力します:\<\!\-\-(.*)\-\-\>
    • [置換]フィールドに次のように入力します:_--><!--$1--><!--_
    • 「すべて置換」ボタンをクリックします

これにより、コメント化された行がブロック内でラップされ、コメントの開始タグが始まり、コメントの開始タグが終わります。これにより、このコメントの前のテキストブロックが有効で、それに続くブロックも有効になります。

コメントを削除してXAMLの元のブロックに戻るには、最初に正規表現を使用しますが、逆のロジックを使用します。

  • 検索フィールド:\-\-\>\<!\-\-(.*)\-\-\>\<\!\-\-
  • 置換フィールド:_<!--$1-->_

次に、XAMLのブロックを選択したまま、Visual Studioの[コメント解除]ボタンをクリックします。

注:使用しているVisual Studioのバージョンによって、正規表現の構文が異なる場合があります。私はVS 2012を使用しています。以前のバージョンでは、中かっこ '{}'を使用して式を分離し、バックスラッシュ '\'を使用してそれをreplaceフィールドで使用していました。現在は、それぞれ括弧 '()'とドル記号 '$'です。

6
Louis

コメントブロックHit cntrl-K、control-cを選択します(コードのブロックをコメント化するためのC#側と同じショートカット)。デザイナーはコメントマーカーをシフトして、ブロック全体にコメントを付けます。

cntrol-k、cntrol-u(Kode Uncomment)は、XAMLコードを再びライブにするために、シフトを解除します。これにより、すべてのコメントマーキングが削除されるため、元のコメントを再度コメントする必要があります。

完璧ではありませんが、おそらくすでに知っている簡単なショートカットです。

1
Clint StLaurent

式ブレンドにはコメント/コメント解除ボタンがありません。コードブロックにコメントを付けたい場合は、コードブロックの先頭と末尾に以下の記号を手動で入力できます

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

以下のスクリーンショットのサンプルを参照してください

See a sample screenshot below

0
Tijo Tom