Xaml-markup-extensions
XAML-マークアップ拡張機能
XAMLアプリケーションでは、マークアップ拡張機能は、特定のXAMLオブジェクトでもプリミティブ型でもない値を取得する方法/手法です。 マークアップ拡張機能は、中かっこを開いて閉じることで定義でき、その中かっこ内にマークアップ拡張機能のスコープが定義されます。
データバインディングと静的リソースはマークアップ拡張機能です。 System.xaml には、使用できる事前定義済みのXAMLマークアップ拡張機能がいくつかあります。
事前定義済みのXAMLマークアップ拡張機能である StaticResources マークアップ拡張機能が使用されている簡単な例を見てみましょう。
次のXAMLコードは、いくつかのプロパティを持つ2つのテキストブロックを作成し、それらの前景は Window.Resources で定義されます。
上記のコードをコンパイルして実行すると、次のMainWindowが生成されます。 青い前景色の2つのテキストブロックを確認できます。
XAMLでは、MarkupExtensionクラスを継承し、MarkupExtensionクラスの抽象メソッドであるProvideValueメソッドをオーバーライドすることにより、カスタムマークアップ拡張機能を定義することもできます。
カスタムマークアップ拡張機能の簡単な例を見てみましょう。
上記のXAMLコードでは、いくつかのプロパティでボタンが作成され、コンテンツ値には、カスタムマークアップ拡張機能*(my:MyMarkupExtension)*が使用され、2つの値「Markup」および「Extension」がFirstStrおよびSecondStrに割り当てられますそれぞれ。
実際、 `+ MyMarkupExtension `は、C#実装で以下に示すように ` MarkupExtension +`から派生したクラスです。 このクラスには、2つの文字列変数FirstStrとSecondStrが含まれています。これらは連結され、その文字列をProvideValueメソッドからボタンのコンテンツに返します。
このアプリケーションを実行してみましょう。すぐにメインウィンドウで「マークアップ拡張機能」がボタンのコンテンツとして正常に使用されたことを確認できます。