エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

FrameworkElement.OnApplyTemplate メソッド

2013/12/12

派生クラスでオーバーライドされると、アプリケーション コードや内部プロセス (再構築レイアウト パスなど) で ApplyTemplate が呼び出されるたびに呼び出されます。簡単に言えば、メソッドは、アプリケーションに UI 要素が表示される直前に呼び出されることになります。詳細については、「解説」を参照してください。

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)

public virtual void OnApplyTemplate()

Windows Phone のテンプレート サポートは、FrameworkElement では完全には有効になりません。その代わり、Windows Phone のアーキテクチャでは、FrameworkElement の直接のサブクラスである Control に対してテンプレート サポートを提供しています。ContentPresenter には、テンプレートの特殊な動作もあります。

継承時の注意

このメソッドには (既定の実装によって FrameworkElement レベルで参照される) ネイティブ実装がある可能性があるため、FrameworkElement から派生する場合は常に基本実装を呼び出す必要があります。Control またはそれ以下のサブクラスから派生した場合、Control の実装は FrameworkElement の基本クラスを呼び出します。そのため、直接の基本クラスを呼び出した場合は、これが、暗黙でネイティブ レベルの実装にアクセスします。

派生クラスは、このメソッドを、通知またはエントリ ポイントとして使用して、次のシナリオを実現できます。

  • カスタム コードを使用してビジュアル ツリーの残りの部分を構築する。

  • テンプレートのビジュアル ツリーが適用済みであることに依存するコードを実行する (テンプレートに基づく名前付き要素への参照を取得するなど)。

  • テンプレートのビジュアル ツリーが完成してからでないと存在する意味がないサービスを導入する。

  • クラス定義のイベント ハンドラーをテンプレートのパーツにアタッチします。たとえば、UI の状態が更新され、代わりに、コントロールに固有の他のイベントが発生するよう、TextBox テンプレート パーツから KeyDown イベントを処理するクラス ロジックが必要な場合もあります。

  • 他の要素に依存しているテンプレート内の要素の状態やプロパティを設定する。たとえば、親要素がわからないとプロパティ値を特定できない場合や、特定の派生クラスが共通のテンプレートを使用する場合などが考えられます。ただし、適切にデザインされたコントロールでは、表示や動作の状態が VisualStateManager で処理されるのが一般的です。

多くの場合、OnApplyTemplate は、テンプレートで作成されたビジュアル ツリーへの調整を取り扱う場所として、Loaded イベントよりも適しています。Windows Phone では、Loaded イベントがテンプレートの適用前に発生する場合があるため、テンプレートを適用して作成されたビジュアル ツリーを Loaded ハンドラー内で調整できない可能性があります。詳細については、Loaded の「解説」を参照してください。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft