Wie füge ich Kommentare zu einer Xaml-Datei in WPF hinzu?

76

Ich habe diese Syntax verwendet, wie ich sie online gefunden habe, aber es wird ein Fehler ausgegeben:

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

'Name darf nicht mit dem Zeichen' <'beginnen, Hexadezimalwert 0x3C. Zeile 4, Position 5. ' XML ist ungültig.

Joan Venge
quelle

Antworten:

85

Ich gehe davon aus, dass sich diese XAML-Namespace-Deklarationen im übergeordneten Tag Ihres Steuerelements befinden. Sie können keine Kommentare in ein anderes Tag einfügen. Ansonsten ist die von Ihnen verwendete Syntax korrekt.

<UserControl xmlns="...">
    <!-- Here's a valid comment. Notice it's outside the <UserControl> tag's braces -->
    [..snip..]
</UserControl>
Dan J.
quelle
1
Danke, wo kann ich es hinstellen? Ich muss sie an bestimmten Stellen platzieren, an denen meine Ergänzungen zum Code angezeigt werden.
Joan Venge
Gemäß meinem Beispiel müssen Sie sie neben dem Tag platzieren, dessen Inhalt Sie geändert haben. Sie können sie nicht buchstäblich neben ein Attribut setzen, das Sie in ein Tag einfügen. Ist dies erforderlich für etwas, das die XAML automatisch analysiert und basierend auf Ihren Kommentaren etwas unternimmt, oder nur für andere Personen, um zu sehen, was Sie geändert haben?
Dan J
1
Sie platzieren sie außerhalb von XML-Tags. <sometag <! - nicht hier -> />. Wenn Sie zu Ihrem Code zurückkehren, sehen Sie, dass sich der Ort, an dem Sie die Fehlermeldung erhalten, in einem mehrzeiligen Tag befindet.
Tormod
32

Laurent Bugnion hat eine schöne Lösung gefunden, die ungefähr so ​​aussehen kann:

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

Hier ist der Link: http://blog.galasoft.ch/posts/2010/02/quick-tip-commenting-out-properties-in-xaml/

Ein Kommentator des Links lieferte zusätzliche Zeichen für das Ignorierpräfix anstelle der Hervorhebung:

mc:Ignorable=”ØignoreØ”
user500099
quelle
3
Da XAML eine Spezialisierungs-XML ist (eine Spezialisierung von SGML), würden Sie denken, dass der -- SGML comment --Stil für Inside-Tag-Kommentare funktioniert. Aber nein, 99,44% der XAML-Parser akzeptieren keine SGML-In-Tag-Kommentare.
Jesse Chisholm
Dies ist die nützlichste Antwort!
JF
3
Ich denke, die Frage von @Joan Venge ist, wie man "Code vorübergehend entfernt" und nicht "Informationen für menschliche Leser hinzufügt".
Lei Yang
27

Sie können keine Kommentare in XML-Tags einfügen.

Schlecht

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

Gut

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib">
<!-- Cool comment -->
Loman
quelle
8
@kenny: Dieser Kommentar ist OT und Garantie ... Jede Programmiersprache basiert auf XML, aber zumindest hatte XAML den guten Sinn zu versuchen, alles so deklarativ wie möglich zu machen, was zum XML-Modell passt.
Merlyn Morgan-Graham
3
@kenny a: xaml ist keine Programmiersprache - es ist eine Auszeichnungssprache und / oder ein Serialisierungsformat, je nachdem, wie Sie es betrachten ... und b: Diese Einschränkung ist keine von xaml - es ist eine von xml.
Marc Gravell
6
Ich verstehe, dass die Einschränkung von XAML darin besteht, dass es auf XML basiert. XML ist also eine zweitklassige Programmier- / Auszeichnungssprache. Ist das besser?
Kenny
1
> XML ist eine Programmiersprache ... was?
rr-
Eines Tages wird die Welt aufhören, HTML / XML / et al als Programmiersprachen zu bezeichnen. Nicht heute.
rw-nandemo
14

Nur ein Hinweis:

In Visual Studio können Sie zum Kommentieren eines Textes den zu kommentierenden Text markieren und dann Strg + K gefolgt von Strg + C verwenden . Zum Kommentieren können Sie Strg + K gefolgt von Strg + U verwenden .

Jakub Lokša
quelle
1
Ich benutze dies die ganze Zeit, wenn ich wie gewohnt programmiere, aber als ich in den XAML-Designer eintrat, dachte ich nicht an diesen. Funktioniert gut.
Matthis Kohli
Dies funktioniert nur, wenn Sie sich außerhalb einer Tag-Definition befinden. "<x> <! - Kommentar -> Inhalt </ x>" funktioniert, "<x <! - Kommentar - >> Inhalt </ x>" nicht. Ich habe versucht, einige Eigenschaften in mehreren Zeilen zu kommentieren, es gab einen Fehler.
Yılmaz Durmaz
0

Sie können keine Kommentare in UWP XAML-Tags einfügen. Ihre Syntax ist richtig.

MACHEN:

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

NICHT ZU TUN:

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

Für alle, die dieses Zeug lernen, sind Kommentare wichtiger. Wenn Sie sich also auf die Idee
von Xak Tacit (über den Link von User500099 ) für Kommentare zu einzelnen Eigenschaften stützen , fügen Sie diese oben im XAML-Codeblock hinzu:

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

Dann im Codeblock

<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>
Laurie Stearn
quelle