Это беспокоило меня некоторое время, может быть, я что-то упустил.
Следующее выдает ошибку с закомментированным атрибутом (ожидается>), но разве я не смогу сделать что-то подобное?
<Label x:Name="Gaga" FontSize="20" <!-- Content="{Binding SomethingThatIsEmptyAtDesignTime"} --> Content="LookAtMe!" />
Хотя вы не можете комментировать, используя базовую разметку XAML, вы можете достичь желаемых результатов, импортировав пространство имен разметки Open XML.
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ignore="http://www.galasoft.ch/ignore" mc:Ignorable="ignore" <Label x:Name="Gaga" FontSize="20" ignore:Content="{Binding SomethingThatIsEmptyAtDesignTime"} Content="LookAtMe!" />
Это сообщение в блоге описывает, как это сделать.
короткий ответ: потому что < символ не допускается между < и > (по определению XML).
<
>
Следующий вопрос должен быть «Как я могу закомментировать атрибут XML / XAML»
Решение (например, в MS Blend / Visual Studio) является атрибутом mc:Ignorable.
mc:Ignorable
<RootElement xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DataContext="this is an attribute for design time only" >
Так что, если вы хотите закомментировать, просто добавьте d: префикс к атрибуту
d:
Чтобы быть более полезным, вы можете иметь более одного игнорируемого префикса:
<RootElement xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" xmlns:rem ="http://schemas.microsoft.com/expression/blend/2008" xmlns:TODO ="http://schemas.microsoft.com/expression/blend/2008" xmlns:DISABLED ="http://schemas.microsoft.com/expression/blend/2008" xmlns:NOTE ="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d rem TODO DISABLED NOTE" d:Foo="this is ignored (design time only attribute)" rem:Background="this is also ignored (commented out)" TODO:Background=" (commented as TODO)" DISABLED:Background="this is also ignored (commented as DISABLED)" >
«Жетоны» rem TODO DISABLED NOTE являются всего лишь подсказкой для меня, и возможны любые другие (действительные имена XML).
rem
TODO
DISABLED
NOTE
практический образец в любом элементе:
<TextBox DISABLED:Background="#FF000000" NOTE:Background="temporary disabled" Background="#FFFFFF" TODO:Background="specify an other background" TODO:TextBox="complete the textbox" >
Использование символов Юникода:
Следующий список символов Юникода действителен для имени xml:
ᆞ ᅳ ǀ ǁ ǂ ǃ ᅀ
ᆞ
ᅳ
ǀ
ǁ
ǂ
ǃ
ᅀ
<TextBox ǃ:Background="temporary disabled" ǂ:Background="temporary disabled" ǁ:Background="temporary disabled" >
Использование в качестве документации (комментарии XML)
<RootElement ... xmlns:doc="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="... doc ..." <MyControl doc.summary="shows my control" doc.remarks="any remarks..." /> >
Поскольку XAML основан на XML, а XML не допускает комментарии внутри другой разметки .К сожалению, я согласен;XML-комментарии оставляют желать лучшего.
Нельзя использовать такой комментарий внутри элемента.
Это относится ко всему XML, а не только к XAML.
Посмотрите на спецификацию XML Comments , которая явно запрещает такую разметку.
http://www.w3.org/TR/REC-xml/#sec-comments
Комментарии могут существовать в любом месте документа, вне другой разметки.
Надеюсь, это поможет!
Я видел интересный подход к комментированию свойств в блоге Лорана Бюньона .
По сути, он определяет пространство имен «ignore», затем добавляет префикс «ignore» к любому свойству, которое он хочет игнорировать.
<ignore:ThisBlockIsIgnored Hello="World" Again="Blah"> <Label Content="No parse" /> </ignore:ThisBlockIsIgnored>
Нет, ты не должен. XML не работает таким образом - узел комментария не является атрибутом, и поэтому он не может идти туда, где должны быть атрибуты.