トリガーの追加と削除
トリガー を使用して、アニメーション タイムラインの開始と停止を行ったり、オブジェクトのプロパティを変更したりできます。トリガーには、次の 2 種類があります。
プロパティ トリガー 1 つのプロパティ (IsPressed プロパティなど) の変化によって、別のプロパティが瞬時に変化する、またはアニメーション化されたタイムラインによって徐々に変化するメカニズムです。プロパティ トリガーは、コントロールのスタイルまたはテンプレートの中に設定できます。
一般的なコントロールの Simple スタイルに対するプロパティ トリガーの設定の例については、「WPF 簡易スタイルのスタイル処理のヒント」に記載されているトピックを参照してください。
イベント トリガー イベント (マウスの Click イベントなど) によってアニメーション タイムラインがトリガーされるメカニズムです。イベント トリガーは、アートボード上のオブジェクト、コントロールのスタイルまたはテンプレート、ユーザー コントロール、またはドキュメントのルートに設定できます。
一般的なコントロールの Simple スタイルに対するイベント トリガーの設定の例については、「WPF 簡易スタイルのスタイル処理のヒント」に記載されているトピックを参照してください。
詳細については、「トリガーを使用した WPF コントロールのビヘイビアーの定義」を参照してください。
メモ : |
---|
トリガーは、トリガーが操作するアニメーション タイムラインと同じスコープ内に追加されます。たとえば、ボタンがドキュメント内にある場合でも、メイン ドキュメントの編集スコープではボタン用のコントロール テンプレート内のアニメーション タイムラインを開始するトリガーを設定することができません。ただし、アニメーションを開始するコントロール テンプレートと同じコントロール テンプレートの中にトリガーを設定できます。これは、ドキュメントに追加されたユーザー コントロールに含まれるアニメーションにも適用されます。 |
プロパティ トリガーを追加するには
[オブジェクトとテンプレート] パネルで、スタイルまたはテンプレートを変更するコントロールを選択します。
[オブジェクト] メニューで、次のいずれかの操作を行います。
コントロールのスタイルを編集するには、[スタイルの編集] をポイントし、[コピーの編集] をクリックします。
コントロールのテンプレートを編集するには、[テンプレートの編集] をポイントし、[コピーして編集] をクリックします。
[スタイル リソースの作成] ダイアログ ボックスが表示されます。
スタイルとテンプレートの詳細、およびそれらを比較した表については、「インタラクティブ コントロールの選択と使用」の「スタイルとテンプレート」を参照してください。
[OK] をクリックしてダイアログ ボックスを閉じ、スタイルまたはテンプレートを開いて編集します。
メモ : 以下の手順は、プロパティ トリガーの設定に注目するために大幅に単純化されています。スタイルとテンプレートの違いの詳細については、「インタラクティブ コントロールの選択と使用」の「スタイルとテンプレート」を参照してください。[スタイル リソースの作成] ダイアログ ボックスのオプションの詳細については、「スタイルの作成」および「テンプレートの作成または変更」を参照してください。
[トリガー] パネルには、[IsEnabled=True] などのコントロール状態に対してプロパティ トリガーが既に設定されている場合があります。トリガーに適した状態がない場合は、[プロパティ トリガーの追加] をクリックします。
既定のプロパティ トリガー (MinWidth = 0) がリストに追加され、編集するために選択されます。同時に、トリガーの記録モードにアートボードが移行します。
[次のときにアクティブ化] のドロップダウン矢印をクリックし、トリガーをアクティブ化するプロパティと値を変更します。たとえば、[CheckBox] コントロールのテンプレートを変更する場合は、[target-element.IsChecked = true] を選択すると、チェック ボックスがクリックされたときにトリガーがアクティブ化されます。
次に、トリガーがアクティブ化されたときに発生する動作を指定します。
メモ : プロパティを target-element からテンプレート内の要素の名前に変更する場合は、[オブジェクトとタイムライン] で要素を先に選択しておく必要があります。
トリガーがアクティブ化されたときにプロパティを変更するには、[オブジェクトとタイムライン] パネルでオブジェクトを選択し、[プロパティ] パネルでプロパティを変更します。この操作が有効なのは、トリガーの記録モードに移行しているためです。
プロパティの変更が、[アクティブな際のプロパティ] の下に表示されます。
トリガーがアクティブ化されたときにアニメーション タイムラインを制御するには、[アクティブ化する際のアクション] の横にある [新しいアクションの追加] をクリックします。
選択できる既存のアニメーション タイムラインがない場合は、[タイムラインが必要です] ダイアログ ボックスが開き、新しいタイムラインの作成を確認するメッセージが表示されます。[OK] をクリックし、キーフレームの設定とオブジェクトの変更を行ってアニメーションを作成します。
選択できる既存のアニメーション タイムラインがある場合は、既存のタイムラインと新しいタイムラインを作成するためのオプションを含むドロップダウン リストが表示されます。
[アクティブ化する際のアクション] の下にタイムラインが表示され、[開始] が設定されます。
スタイルまたはテンプレートの編集スコープを終了するには、[上へスコープ] をクリックします。アプリケーションを実行して新しいトリガーをテストするには、F5 キーを押します。
イベント トリガーを追加するには
[オブジェクトとタイムライン] パネルで、操作されたときにトリガーをアクティブ化するオブジェクトを選択します。たとえば、ユーザーがポインターをテキスト ボックスに合わせたときにトリガーをアクティブ化する場合は、テキスト ボックスを選択します。
[トリガー] パネルで、[イベント トリガーの追加] をクリックします。
- 既定のトリガー ([Window.Loaded の発生時]) が追加されます。
ドロップダウン矢印をクリックして、トリガーをアクティブ化するイベントを変更します。たとえば、ユーザーがポインターをテキスト ボックスに合わせたときにトリガーをアクティブ化する場合は、[Window.Loaded の発生時] を [textBox.MouseMove の発生時] に変更します。
メモ : イベントを Window からテンプレート内の要素の名前に変更する場合は、[オブジェクトとタイムライン] パネルで要素を先に選択しておく必要があります。
トリガーがアクティブ化されたときにアニメーション タイムラインを制御するには、[アクティブ化する際のアクション] の横にある [checkBox.MouseMove の発生時] をクリックします。
選択できる既存のアニメーション タイムラインがない場合は、[タイムラインが必要です] ダイアログ ボックスが開き、新しいタイムラインの作成を確認するメッセージが表示されます。[OK] をクリックし、キーフレームの設定とオブジェクトの変更を行ってアニメーションを作成します。
選択できる既存のアニメーション タイムラインがある場合は、既存のタイムラインと新しいタイムラインを作成するためのオプションを含むドロップダウン リストが表示されます。
[checkBox.MouseMove の発生時] の下にタイムラインが表示され、[開始] が設定されます。
F5 キーを押してアプリケーションを実行し、新しいトリガーをテストします。
トリガーを削除するには
[トリガー] パネルで、削除するトリガーを選択します。
メモ : 削除するトリガーがスタイルまたはコントロール テンプレートの中にある場合は、そのスタイルまたはテンプレートの編集モードに移行していることを確認してください。
[トリガーの削除] をクリックします。
リストからトリガーが削除されます。