VisualStateGroup クラス


一度に 1 つしか選択できない VisualState オブジェクトと、ある状態から別の状態に遷移するために使用する VisualTransition オブジェクトを格納します。Contains mutually exclusive VisualState objects and VisualTransition objects that are used to move from one state to another.

public ref class VisualStateGroup : System::Windows::DependencyObject
public class VisualStateGroup : System.Windows.DependencyObject
type VisualStateGroup = class
    inherit DependencyObject
Public Class VisualStateGroup
Inherits DependencyObject

次の例では、1つの Gridを含む Button の単純な ControlTemplate を作成します。The following example creates a simple ControlTemplate for a Button that contains one Grid. また、MouseOverNormal の状態を定義する CommonStatesという名前の VisualStateGroup も含まれています。It also contains a VisualStateGroup named CommonStates, which defines the MouseOver and Normal states. VisualStateGroup には、ユーザーがマウスポインターを Button上に移動したときに、Grid が緑から赤に変更されるまでに0.5 秒かかることを指定する VisualTransition もあります。The VisualStateGroup also has a VisualTransition that specifies that it takes one half second for the Grid to change from green to red when the user moves the mouse pointer over the Button.

<ControlTemplate TargetType="Button">
  <Grid >
      <VisualStateGroup x:Name="CommonStates">


          <!--Take one half second to trasition to the MouseOver state.-->
          <VisualTransition To="MouseOver" 

        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            mouse is over the button.-->
        <VisualState x:Name="MouseOver">
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
              Storyboard.TargetProperty="Color" To="Red" />
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>


VisualStateGroup には、VisualState オブジェクトのコレクションが含まれています。Each VisualStateGroup contains a collection of VisualState objects. コントロールが特定の状態にある場合に、コントロールの外観がどのように変化するかを指定する Storyboard オブジェクトのコレクション VisualState 格納されています。A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in a certain state. たとえば、Button が押されているときとは異なる外観になっている場合があります。For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Button が押されたときにに対応する2つの状態 ("Pressed") と、("Normal")。Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal").

コントロールに VisualState を追加するには、コントロールの VisualStateManager.VisualStateGroups 添付プロパティを設定します。You add VisualState to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. 同じ VisualStateGroup内で相互に排他的な状態を格納します。You put states that are mutually exclusive to each other in the same VisualStateGroup. たとえば、CheckBox には、2つの VisualStateGroup オブジェクトがあります。For example, the CheckBox has two VisualStateGroup objects. 1つには、状態、NormalMouseOverPressed、および Disabledが含まれます。One contains the states, Normal, MouseOver, Pressed, and Disabled. もう1つは、状態、CheckedUnChecked、および Indeterminateを含んでいます。The other contains the states, Checked, UnChecked, and Indeterminate. CheckBox は、同時に状態 MouseOverUnChecked にすることができますが、同時に MouseOver および Pressed の状態にすることはできません。The CheckBox can be in states MouseOver and UnChecked at the same time, but it cannot be in the MouseOver and Pressed states at the same time.

VisualState オブジェクトを任意の要素に追加できますが、他のユーザーが Controlの視覚的な動作を再定義できるようにするには、特に便利な方法です。Although you can add VisualState objects to any element, they are a particularly useful way to enable others to redefine the visual behavior of a Control. ControlTemplateを使用するカスタムコントロールを作成する場合は、そのクラス定義に TemplateVisualStateAttribute を追加することによって、コントロールの状態を指定できます。If you create a custom control that uses a ControlTemplate, you can specify which states that control can be in by adding a TemplateVisualStateAttribute on its class definition. 次に、コントロールの新しい ControlTemplate を作成するすべてのユーザーが、VisualState オブジェクトをテンプレートに追加できます。Then anyone who creates a new ControlTemplate for your control can add VisualState objects to the template. TemplateVisualStateAttribute では、Visual Studio や Blend for Visual Studio などのデザイナーツールを使用して、コントロールの状態を公開できます。The TemplateVisualStateAttribute enables designer tools, such as Visual Studio and Blend for Visual Studio, to expose the control's states. 同じ TemplateVisualStateAttribute.GroupName を持つ状態が同じ VisualStateGroupに属しています。States with the same TemplateVisualStateAttribute.GroupName belong in the same VisualStateGroup.

ControlTemplateVisualStateGroup オブジェクトを使用する方法の詳細については、「 ControlTemplate を作成して既存のコントロールの外観をカスタマイズする」を参照してください。For more information about how to use VisualStateGroup objects in a ControlTemplate, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate. VisualStateManagerを使用するコントロールを作成する方法の詳細については、「カスタマイズ可能な外観を持つコントロールの作成」を参照してください。For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance.

Transitions プロパティには、VisualStateGroupで定義されている状態の間でコントロールが遷移するときに適用される VisualTransition オブジェクトが含まれています。The Transitions property contains VisualTransition objects that are applied when the control transition between states that are defined in the VisualStateGroup.



VisualStateGroup クラスの新しいインスタンスを初期化します。Initializes a new instance of the VisualStateGroup class.



コントロールに現在適用されている VisualState を取得します。Gets the VisualState that is currently applied to the control.


このインスタンスの CLRCLR 型をラップする DependencyObjectType を取得します。Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(継承元 DependencyObject)

この Dispatcher が関連付けられている DispatcherObject を取得します。Gets the Dispatcher this DispatcherObject is associated with.

(継承元 DispatcherObject)

このインスタンスが現在シールされている (読み取り専用である) かどうかを示す値を取得します。Gets a value that indicates whether this instance is currently sealed (read-only).

(継承元 DependencyObject)

VisualStateGroup の名前を取得または設定します。Gets or sets the name of the VisualStateGroup.


同時に指定できない VisualState オブジェクトのコレクションを取得します。Gets the collection of mutually exclusive VisualState objects.


VisualTransition オブジェクトのコレクションを取得します。Gets the collection of VisualTransition objects.



呼び出し元のスレッドがこの DispatcherObject にアクセスできるかどうかを確認します。Determines whether the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)

プロパティのローカル値をクリアします。Clears the local value of a property. クリアするプロパティは DependencyProperty 識別子で指定されます。The property to be cleared is specified by a DependencyProperty identifier.

(継承元 DependencyObject)

読み取り専用プロパティのローカル値を消去します。Clears the local value of a read-only property. 消去するプロパティは、 DependencyPropertyKeyで指定します。The property to be cleared is specified by a DependencyPropertyKey.

(継承元 DependencyObject)

指定した依存関係プロパティの値を強制します。Coerces the value of the specified dependency property. これは、呼び出し元の DependencyObject の依存関係プロパティのプロパティ メタデータで指定されている CoerceValueCallback 関数を呼び出すことによって実現されます。This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(継承元 DependencyObject)

指定した DependencyObject が現在の DependencyObject と等しいかどうかを判断します。Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(継承元 DependencyObject)

この DependencyObject のハッシュ コードを取得します。Gets a hash code for this DependencyObject.

(継承元 DependencyObject)

どの依存関係プロパティがこの DependencyObject 上にローカルに設定された値を持つかを確認するための、専用の列挙子を作成します。Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(継承元 DependencyObject)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

DependencyObject のこのインスタンスにある依存関係プロパティの現在の有効値を返します。Returns the current effective value of a dependency property on this instance of a DependencyObject.

(継承元 DependencyObject)

指定した依存関係プロパティの有効値を再評価します。Re-evaluates the effective value for the specified dependency property.

(継承元 DependencyObject)

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

この DependencyObject の依存関係プロパティの有効値が更新されると、そのたびに呼び出されます。Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. 変更された特定の依存関係プロパティは、イベント データで報告されます。The specific dependency property that changed is reported in the event data.

(継承元 DependencyObject)

ローカルの依存関係プロパティの値を返します (存在する場合)。Returns the local value of a dependency property, if it exists.

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

依存関係プロパティ値のソースを変更せずにその値を設定します。Sets the value of a dependency property without changing its value source.

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

依存関係プロパティ識別子を指定して、該当する依存関係プロパティのローカル値を設定します。Sets the local value of a dependency property, specified by its dependency property identifier.

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

依存関係プロパティの DependencyPropertyKey 識別子で指定した読み取り専用の依存関係プロパティのローカル値を設定します。Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(継承元 DependencyObject)

シリアル化プロセスが、指定された依存関係プロパティの値をシリアル化する必要があるかどうかを示す値を返します。Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(継承元 DependencyObject)

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

呼び出し元のスレッドがこの DispatcherObject にアクセスできるように強制します。Enforces that the calling thread has access to this DispatcherObject.

(継承元 DispatcherObject)



コントロールが別の状態に遷移した後に発生します。Occurs after a control transitions to a different state.


コントロールが別の状態への遷移を開始したときに発生します。Occurs when a control starts transitioning to a different state.