Поделиться через


{}Escape-последовательность/расширение разметки

Escape-последовательность XAML предоставляется для значений атрибутов. Escape-последовательность позволяет интерпретировать последующие значения в атрибуте как литерал.

Использование атрибута XAML

<object property="{} literalValue" .../>

Использование элемента свойства XAML

<object>
  <object.property>
    {} literalValue
  </object.property>
</object>

Значения XAML

Стоимость Description
literalValue Строка литералов, которая следует за escape-последовательностью. Обычно эта строка содержит открывающую или закрывающую скобку ({ или }).

Замечания

Escape-последовательность ({}) позволяет использовать открывающую фигурную скобку ({) в качестве литерального символа в XAML.

Средства чтения XAML обычно используют открытые фигурные скобки ({) для обозначения точки входа расширения разметки, однако сначала проверяют, что следующий символ — это закрывающая скобка (}). Только две расположенные рядом фигурные скобки ({}) считаются ли они escape-последовательностью.

Если обнаружена escape-последовательность, средство чтения XAML должно обработать оставшуюся часть строки как строку. Однако если escape-последовательность применяется к элементу с преобразователем типов, строка может пройти преобразование типов при интерпретации модуля записи XAML.

Escape-последовательность не является расширением разметки и не поддерживается классами. Однако это соглашение должны соблюдать средства чтения XAML (включая пользовательские средства чтения XAML).

Кавычки (") нельзя подобным образом использовать в качестве escape-последовательности. Если необходимо задать кавычки как значение неконтентного свойства, используйте синтаксис элементов свойств и поместите кавычки как строку внутри элемента свойства или используйте именованную сущность XML. Для контентного свойства кавычки могут составлять весь контент.

Escape-последовательность ({}) часто требуется при указании типа XML, который должен включать квалификатор пространства имен там, где может появиться расширение разметки XAML. Это расположение включает начало значения атрибута XAML, а в расширении разметки следует сразу после знака равенства (=). В следующем примере показаны escape-последовательности для пространства имен XML, которое появляется в начале значения атрибута XAML.

<StackPanel Name="stacky">
  <StackPanel.Resources>
    <DataTemplate DataType="{}{http://planetsNS}Planet" >
      <StackPanel Orientation="Horizontal">
        <TextBlock Width="100" Text="{Binding Path=Element[{http://planetsNS}DiameterKM].Value}" />
        <TextBlock Width="100" Text="{Binding Path=Attribute[Name].Value}" />
        <TextBlock Text="{Binding Path=Element[{http://planetsNS}Details].Value}" /> 
      </StackPanel>
    </DataTemplate>
  </StackPanel.Resources>

См. также