デバイス テンプレート サポート
更新 : 2007 年 11 月
デバイス テンプレート サポートは、DeviceSpecific の Choice コンストラクトの一部として提供されています。デバイス テンプレートを提供する ASP.NET モバイル コントロールの記述は、テンプレート化された ASP.NET サーバー コントロールを記述するのとよく似ています。ただし、モバイル コントロール固有の以下の相違点に注意する必要があります。
デバイス テンプレートをサポートするモバイル コントロールは、ITemplateable インターフェイスを実装します。これはマーカー インターフェイスであり、メソッドを持っていません。
デバイス テンプレートをサポートするコントロールは既定のレンダリング モードを持っていなければなりません。したがって、デバイス テンプレートが定義または指定されていなくても、コントロールはデバイスにレンダリングすることができます。
コントロールの開発者は、レンダリング時のデバイス テンプレートの処理方法を決めておく必要があります。デバイス テンプレートを定義して選択している場合、ある動作によって排他的なテンプレート モードに切り替わります。次にコントロールは、指定されたテンプレートを使用してすべてのレンダリングを実行します。このようなコントロールの例が、List コントロールです。このほか、コントロールは純粋に付加的なプロセスでテンプレートを使用することができます。あるテンプレートが定義および選択されている場合、既定のレンダリングの一部に追加したり、規定のレンダリングの一部を置き換えたりするために、そのテンプレートを使用できます。この動作を行うコントロールの例が、Form コントロールです。
ITemplate プロパティを公開する代わりに、モバイル コントロールは定義済みテンプレートのコレクションにアクセスできます。MobileControl 基本クラスは、コントロールがデバイス テンプレートを使用するときに役立つ、以下の 2 つのメンバを持っています。
IsTemplated プロパティは、以下のコード例に示すように、コントロールが定義済みの選択されたテンプレートを持っているかどうかを示します。
if (mobileControl.IsTemplated) { return true; }
GetTemplate メソッドは、指定された名前のデバイス テンプレートを返します。ただし、テンプレートが定義されていない場合は null を返します。次のコード例は、デバイス テンプレートを取得し、ステータスが null かどうかをテストする方法を示しています。
public override void CreateDefaultTemplatedUI(bool doDataBind) { ITemplate headerTemplate = GetTemplate(Constants.HeaderTemplateTag); ITemplate footerTemplate = GetTemplate(Constants.FooterTemplateTag); ITemplate scriptTemplate = GetTemplate(Constants.ScriptTemplateTag); if (headerTemplate != null) { _headerContainer = new TemplateContainer(); headerTemplate.InstantiateIn(_headerContainer); _headerContainer.EnablePagination = false; Controls.AddAt(0, _headerContainer); } if (footerTemplate != null) { _footerContainer = new TemplateContainer(); footerTemplate.InstantiateIn(_footerContainer); _footerContainer.EnablePagination = false; Controls.Add(_footerContainer); } if (scriptTemplate != null) { _scriptContainer = new TemplateContainer(); scriptTemplate.InstantiateIn(_scriptContainer); _scriptContainer.EnablePagination = false; } }
次の表は、Form コントロールを通じて利用できるテンプレートを示しています。Form コントロールは、デバイス固有のテンプレート セットとデバイスに依存しないテンプレート セットの両方をサポートしています。
テンプレート |
説明 |
---|---|
ヘッダー テンプレート |
ヘッダー テンプレートは、フォームの一番上にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にヘッダーが表示されます。ヘッダー テンプレートは、デバイスに依存しないテンプレート セットの一部にすることができます。テンプレート セットがデバイスに依存しない場合、ヘッダー テンプレートにはモバイル コントロールが含まれます。 |
フッター テンプレート |
フッター テンプレートは、フォームの一番下にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にはフッターが表示されます。フッター テンプレートは、デバイスに依存しないテンプレート セットの一部にすることができます。テンプレート セットがデバイスに依存しない場合、フッター テンプレートにはモバイル コントロールが含まれます。 |
スクリプト テンプレート |
スクリプト テンプレートは、フォームの一番上にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にスクリプト テンプレートが表示されます。スクリプト テンプレート内のコードは、HTML デバイスでは <head> の開始タグの直後に追加され、WML デバイスでは <card> の開始タグの直後に追加されます。 |
これらのテンプレートは、プログラムからも使用可能です。詳細については、Footer プロパティ、Header プロパティ、および Script プロパティを参照してください。