VisualStateManager.VisualStateGroups 添付プロパティ


VisualStateGroup オブジェクトのコレクションを取得または設定します。Gets or sets a collection of VisualStateGroup objects.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

次の例では、 ControlTemplate 1 つButton Gridのを含むの単純なを作成します。The following example creates a simple ControlTemplate for a Button that contains one Grid. またVisualStateGroup 、とCommonStates MouseOverの状態を定義するという名前のが含まれています。NormalIt also contains a VisualStateGroup named CommonStates, which defines the MouseOver and Normal states. またVisualStateGroup 、にはVisualTransition 、ユーザーがマウスポインターをのButton上に移動Gridしたときに、が緑から赤に変化するように指定するがあります。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. VisualStateは、コントロールがStoryboard特定の状態にある場合に、コントロールの外観がどのように変化するかを指定するオブジェクトのコレクションが格納されます。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とき ("Pressed") と ("Normal") ではない場合に、が定義する2つの状態。Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal").

コントロールにVisualStateを追加するには、 VisualStateGroupsコントロールの添付プロパティを設定します。You add VisualState to a control by setting the 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. CheckBoxMouseOver MouseOver Pressed状態でも同時にでもかまいませんが、との状態に同時に配置することはできません。UnCheckedThe 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. 同じSystem.Windows.TemplateVisualStateAttribute.GroupNameを持つ状態が同じVisualStateGroupに属しています。States with the same System.Windows.TemplateVisualStateAttribute.GroupName belong in the same VisualStateGroup.

でオブジェクトを使用VisualStateGroupする方法の詳細については 、「ControlTemplateを作成して既存のコントロールの外観をカスタマイズする」を参照して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.