VisualStateManager クラス

定義

コントロールの状態を遷移するための状態とロジックを管理します。

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
継承

次の例では、 を Rectangle 作成し、 VisualStateGroup 添付プロパティに 名前付き CommonStatesVisualStateManager.VisualStatesGroups 追加します。 この例では、 MouseOver で オブジェクトと NormalVisualState オブジェクトを定義します CommonStatesVisualStateGroup。 ユーザーが の上にマウス ポインターを Rectangle移動すると、1/5 秒で赤から緑に変わります。 ユーザーが四角形からマウスを離すと、 Grid すぐに赤に戻ります。 状態では が Normal 定義されていないことに Storyboard注意してください。 がStoryboard状態からMouseOver状態にNormal遷移するとRectangle、 の が停止しColorStoryboardMouseOver の プロパティSolidColorBrushが赤色に戻るため、 は必須ではありません。

<Rectangle Name="rect" 
           Width="100" Height="100"
           MouseEnter="rect_MouseEvent" 
           MouseLeave="rect_MouseEvent">
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup Name="MouseStates">
      <VisualState Name="MouseEnter">
        <Storyboard>
          <ColorAnimation To="Green" 
                          Storyboard.TargetName="rectBrush" 
                          Storyboard.TargetProperty="Color"/>
        </Storyboard>
      </VisualState>
      <VisualState Name="MouseLeave" />
      <VisualStateGroup.Transitions>
        <VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>

        <VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
          <VisualTransition.GeneratedEasingFunction>
            <ExponentialEase EasingMode="EaseOut" Exponent="10"/>
          </VisualTransition.GeneratedEasingFunction>
        </VisualTransition>

      </VisualStateGroup.Transitions>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectBrush" Color="Red"/>
  </Rectangle.Fill>
</Rectangle>

次の例では、前の例で定義したイベント ハンドラーを示し、 メソッドを GoToElementState 呼び出して状態間を遷移します。 前の例の四角形が の ControlTemplate一部である場合、この例では メソッドを呼び出す GoToState 必要があります。

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
    If rect.IsMouseOver Then
        VisualStateManager.GoToElementState(rect, "MouseEnter", True)
    Else
        VisualStateManager.GoToElementState(rect, "MouseLeave", True)
    End If
End Sub

注釈

VisualStateManagerを使用すると、コントロールの状態、コントロールが特定の状態にある場合のコントロールの外観、およびコントロールが状態を変更したときの外観を指定できます。 たとえば、 Button が押された場合と押されていない場合の外観が若干異なる場合があります。 が定義する Button 2 つの状態は、それが押されたとき () と、それが ("Pressed") でない"Normal"場合に対応します。 状態にある場合のコントロールの外観は、 によって定義されます VisualStateVisualStateには、コントロールがその状態のときにコントロールの外観がどのように変化するかを指定する オブジェクトのコレクションStoryboardが含まれます。 コントロールに表示状態を追加するには、コントロールに VisualStateManager.VisualStateGroups 添付プロパティを設定します。 それぞれに VisualStateGroup 、相互に排他的なオブジェクトの VisualState コレクションが含まれています。 つまり、コントロールは常に、各 VisualStateGroupで の 1 つの状態になります。

VisualStateManagerでは、コントロールが特定の状態になるタイミングを指定することもできます。 状態を変更するために呼び出すメソッドは、シナリオによって異なります。 で を使用VisualStateManagerするコントロールを作成する場合は、 メソッドをGoToState呼び出ControlTemplateします。 を使用 VisualStateManagerするコントロールを作成する方法の詳細については、「 カスタマイズ可能な外観のコントロールを作成する」を参照してください。 のControlTemplate外側を使用するVisualStateManager場合 (たとえば、 または 1 つの要素で UserControlVisualStateManager使用する場合)、 メソッドをGoToElementState呼び出します。 どちらの場合も、 は、 VisualStateManager 関連する状態に関連付けられているストーリーボードを適切に開始および停止するために必要なロジックを実行します。 たとえば、コントロールが状態を定義し、 State1 それぞれにストーリーボードが関連付けられていると State2します。 コントロールが にありState1、 または GoToElementStateGoToStateState2す場合、 は VisualStateManager でストーリーボードを開始し、 でState2State1ストーリーボードを停止します。

Windows Presentation Foundation (WPF) に含まれるコントロールは、 をVisualStateManager使用して表示状態を変更します。 WPF に含まれるコントロールの を作成ControlTemplateする場合は、コントロールControlTemplateの にオブジェクトを追加VisualStateして、コントロールの外観を特定の状態で指定できます。 WPF に含まれるコントロールの表示状態の名前を見つけるには、「 コントロールのスタイルとテンプレート」を参照してください。 コントロールのロジックは状態間の遷移を処理するため、新しい ControlTemplateでオブジェクトを定義する以外の操作をVisualState行う必要はありません。 既存のコントロールのコントロール テンプレートを作成する方法の詳細については、「 ControlTemplate を作成して既存のコントロールの外観をカスタマイズする」を参照してください。

状態間を遷移するための独自のロジックを実装する場合は、 を VisualStateManager継承し、 メソッドを GoToStateCore オーバーライドし、カスタム ロジックを VisualStateManager.CustomVisualStateManager 使用するコントロールに添付プロパティを設定する必要があります。

コンストラクター

VisualStateManager()

VisualStateManager クラスの新しいインスタンスを初期化します。

フィールド

CustomVisualStateManagerProperty

CustomVisualStateManager 依存関係プロパティを識別します。

VisualStateGroupsProperty

VisualStateGroups 依存関係プロパティを識別します。

プロパティ

DependencyObjectType

このインスタンスの DependencyObjectType CLR 型をラップする を取得します。

(継承元 DependencyObject)
Dispatcher

この Dispatcher が関連付けられている DispatcherObject を取得します。

(継承元 DispatcherObject)
IsSealed

このインスタンスが現在シールされている (読み取り専用である) かどうかを示す値を取得します。

(継承元 DependencyObject)

添付プロパティ

CustomVisualStateManager

コントロールの状態を遷移させる VisualStateManager オブジェクトを取得または設定します。

VisualStateGroups

VisualStateGroup オブジェクトのコレクションを取得または設定します。

メソッド

CheckAccess()

呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。

(継承元 DispatcherObject)
ClearValue(DependencyProperty)

プロパティのローカル値をクリアします。 クリアするプロパティは DependencyProperty 識別子で指定されます。

(継承元 DependencyObject)
ClearValue(DependencyPropertyKey)

読み取り専用プロパティのローカル値を消去します。 消去するプロパティは、DependencyPropertyKey で指定します。

(継承元 DependencyObject)
CoerceValue(DependencyProperty)

指定した依存関係プロパティの値を強制します。 これは、呼び出し元の DependencyObject の依存関係プロパティのプロパティ メタデータで指定されている CoerceValueCallback 関数を呼び出すことによって実現されます。

(継承元 DependencyObject)
Equals(Object)

指定した DependencyObject が現在の DependencyObject と等しいかどうかを判断します。

(継承元 DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

CustomVisualStateManager 添付プロパティを取得します。

GetHashCode()

この DependencyObject のハッシュ コードを取得します。

(継承元 DependencyObject)
GetLocalValueEnumerator()

どの依存関係プロパティがこの DependencyObject 上にローカルに設定された値を持つかを確認するための、専用の列挙子を作成します。

(継承元 DependencyObject)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValue(DependencyProperty)

DependencyObject のこのインスタンスにある依存関係プロパティの現在の有効値を返します。

(継承元 DependencyObject)
GetVisualStateGroups(FrameworkElement)

VisualStateGroups 添付プロパティを取得します。

GoToElementState(FrameworkElement, String, Boolean)

要素を 2 つの状態の間で遷移させます。 このメソッドを使用して、コントロールによって定義された状態ではなく、アプリケーションによって定義された状態に遷移します。

GoToState(FrameworkElement, String, Boolean)

コントロールを 2 つの状態間で切り替えます。 ControlTemplate を持つコントロールの状態を遷移させるには、このメソッドを使用します。

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

コントロールは 2 つの状態の間で遷移します。

InvalidateProperty(DependencyProperty)

指定した依存関係プロパティの有効値を再評価します。

(継承元 DependencyObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

この DependencyObject の依存関係プロパティの有効値が更新された場合に必ず呼び出されます。 変更された特定の依存関係プロパティは、イベント データで報告されます。

(継承元 DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

指定された CurrentStateChanging オブジェクトで VisualStateGroup イベントを発生させます。

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

指定された CurrentStateChanging オブジェクトで VisualStateGroup イベントを発生させます。

ReadLocalValue(DependencyProperty)

ローカルの依存関係プロパティの値を返します (存在する場合)。

(継承元 DependencyObject)
SetCurrentValue(DependencyProperty, Object)

依存関係プロパティ値のソースを変更せずにその値を設定します。

(継承元 DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

CustomVisualStateManager 添付プロパティを設定します。

SetValue(DependencyProperty, Object)

依存関係プロパティ識別子を指定して、該当する依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
SetValue(DependencyPropertyKey, Object)

依存関係プロパティの DependencyPropertyKey 識別子で指定した読み取り専用の依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
ShouldSerializeProperty(DependencyProperty)

シリアル化プロセスが、指定された依存関係プロパティの値をシリアル化する必要があるかどうかを示す値を返します。

(継承元 DependencyObject)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
VerifyAccess()

呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。

(継承元 DispatcherObject)

適用対象