Як додати коментарі до файлу Xaml у WPF?


78

Я використовував цей синтаксис, коли знаходив в Інтернеті, але він видає помилку:

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

'Ім'я не може починатися з символу' <', шістнадцяткове значення 0x3C. Рядок 4, позиція 5. ' XML не дійсний.

Відповіді:


86

Я припускаю, що ці декларації простору імен XAML містяться у батьківському тезі вашого елемента керування? Ви не можете розміщувати коментарі всередині іншого тегу. Крім цього, синтаксис, який ви використовуєте, правильний.

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

1
Дякую, де я можу його поставити? Мені потрібно розмістити їх у певних місцях, що показують мої доповнення до коду.
Джоан Венге

Згідно з моїм прикладом, вам потрібно буде поставити їх поруч із тегом, вміст якого ви змінили. Ви не зможете буквально розмістити їх поруч із атрибутом, який ви додаєте всередину тегу. Це потрібно для чогось, що буде автоматично аналізувати XAML і робити щось на основі ваших коментарів, або просто для того, щоб інші люди бачили, що ви змінили?
Dan J

1
Ви розміщуєте їх на зовнішній стороні тегів XML. <sometag <! - не тут -> />. Якщо ви повернетесь до свого коду, ви побачите, що місце, куди ви поставили їх, що отримує повідомлення про помилку, знаходиться в багаторядковому тегу.
Тормод

32

Знайшов приємне рішення від 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Ø”

3
Оскільки XAML є спеціалізацією XML (що є спеціалізацією SGML), ви думаєте, що -- SGML comment --стиль буде працювати для коментарів всередині тегів. Ні, 99,44% аналізаторів XAML не приймають коментарі SGML у мітках.
Джессі Чисхолм,

Це найкорисніша відповідь!
JF

3
Я думаю, що питання @Joan Venge полягає в тому, як "тимчасово видалити код", а не "Додавання інформації для читачів".
Lei Yang

28

Ви не можете вставити коментарі всередину тегів xml.

Погано

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

8
@kenny: Цей коментар є OT і ranty ... Базуючи будь-яку мову програмування на XML, це відмовно, але принаймні XAML мав розумний спробу зробити все якомога декларативнішим, що відповідає моделі XML.
Merlyn Morgan-Graham

3
@kenny a: xaml не є мовою програмування - це мова розмітки та / або формат серіалізації, залежно від того, як ви на це дивитесь ... і b: це обмеження не є одним із xaml - воно є одним з xml.
Марк Гравелл

6
Я розумію, обмеження XAML полягає в тому, що він базується на XML. Отже, XML - це друга мова програмування / розмітки. Так краще?
kenny

1
> XML - це мова програмування ... що?
rr-

Одного разу світ перестане посилатися на HTML / XML / та інші як мови програмування. Не сьогодні.
rw-nandemo

15

Лише підказка:

У Visual Studio , щоб коментувати текст, ви можете виділити текст , який ви хочете прокоментувати, а потім використовувати Ctrl + K потім Ctrl + C . Щоб розкоментувати, ви можете використовувати Ctrl + K слідують Ctrl + U .


1
Використовуючи це весь час, програмуючи як зазвичай, але коли я вступив до дизайнера XAML, я не думав про це. Працює нормально.
Маттіс Колі

це працює лише тоді, коли ви знаходитесь поза визначенням тегу. "<x> <! - comment -> content </x>" працює, "<x <! - comment ->> content </x>" ні. Я намагався прокоментувати деякі властивості декількох рядків, це дало помилку.
Yılmaz Durmaz

Для наочності в Visual Studio 201 це стосується команд Edit.CommentSelectionі Edit.UncommentSelection.
AlainD

0

Ви не можете розміщувати коментарі всередині тегів 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"/>

-1

Для тих, хто вивчає ці речі, коментарі важливіші, тому, спираючись на ідею
Xak Tacit (за посиланням User500099 ) для коментарів Single Property, додайте це у верхню частину коду 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.