{} エスケープ シーケンス/マークアップ拡張

属性値の XAML エスケープ シーケンスについて説明します。 エスケープ シーケンスを使用すると、それ以降の属性の値をリテラルとして解釈できます。

XAML 属性の使用方法

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

XAML プロパティ要素の使用

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

XAML 値

説明
literalValue エスケープ シーケンスの後に続くリテラル文字列。 通常、この文字列には、左または右の中かっこ ({ または }) が含まれています。

Remarks

エスケープ シーケンス ({}) は、左中かっこ ({) を XAML のリテラル文字として使用できるようにするために使用されます。

通常、左中かっこ ({) は XAML リーダーによりマークアップ拡張のエントリ ポイントを示すために使用されます。ただし、最初に、次の文字が右中かっこ (}) であるかどうかが確認されます。 2 つの中かっこ ({}) が隣接している場合にのみ、エスケープ シーケンスと見なされます。

エスケープ シーケンスが検出された場合、XAML リーダーは残りの文字列を文字列として処理する必要があります。 ただし、エスケープ シーケンスが型コンバーターを持つメンバーに適用されている場合、その文字列は XAML ライターによる解釈の際に型変換が行われている可能性があります。

エスケープ シーケンスはマークアップ拡張ではなく、クラスによってバッキングされません。 ただし、XAML リーダー (カスタム XAML リーダーを含む) で考慮する必要のある規則です。

この方法では、引用符 (") をエスケープ シーケンスとして使用することはできません。 コンテンツ以外のプロパティのプロパティ値として引用符を設定する必要がある場合は、プロパティ要素構文を使用してプロパティ要素の内側に引用符を文字列として配置するか、XML 文字エンティティを使用します。 コンテンツ プロパティの場合は、引用符をコンテンツ全体にすることができます。

XAML マークアップ拡張が使用される可能性のある場所に名前空間修飾子を含める必要がある XML 型を指定するときは、エスケープ シーケンス ({}) が必要になることがよくあります。 この場所には、XAML 属性値の開始と、等号 (=) の直後のマークアップ拡張が含まれます。 次の例は、XAML 属性値の先頭で使用されている XML 名前空間に対するエスケープ シーケンスを示したものです。

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

関連項目