{} エスケープ シーケンス/マークアップ拡張機能
更新 : 2007 年 11 月
属性値に XAML エスケープ シーケンスを提供して、属性内で後続の値をリテラルとして解釈できるようにします。
XAML 属性の使用方法
<object property="{}literalValue" .../>
XAML プロパティ要素の使用方法
<object>
<object.property>
{}literalValue
</object.property>
</object>
XAML 値
literalValue |
エスケープするリテラル文字列。 |
解説
{} エスケープ シーケンスは、属性構文内のマークアップ拡張機能で使用する { と } をエスケープするために使用します。エスケープ シーケンス自体は厳密にはマークアップ拡張機能ではなく、クラスによってサポートされません。XAML の他のすべてのマークアップ拡張機能では、{ と } の 2 つの記号を使用します。これは、XAML プロセッサの実装によって、属性値の処理をリテラルやハンドラ参照以外にエスケープする記号として認識されます。2 つの中かっこが並ぶ特殊な場合だけが、エスケープ シーケンスとして扱われます。詳細については、「マークアップ拡張機能と 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>