Expand
VisualStateManager Class

Manages states and the logic for transitioning between states for controls.

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)
Syntax

'Declaration

Public Class VisualStateManager _
	Inherits DependencyObject
'Usage

Dim instance As VisualStateManager
<templateRoot>
  <VisualStateManager.VisualStateGroups>
    oneOrMoreVisualStateGroups
  </VisualStateManager.VisualStateGroups>
</templateRoot>

XAML Values

templateRoot

The root UIElement of content for a template applied to a control.

oneOrMoreVisualStateGroups

One or more object elements that are of type VisualStateGroup.

Remarks

Template authors add VisualStateGroup objects the VisualStateManager.VisualStateGroups attached property to represent states of a control and Control authors transition between states by calling the GoToState method.

If you want to implement your own logic for transitioning between states, you must inherit from VisualStateManager, override the GoToStateCore method, and set the VisualStateManager.CustomVisualStateManager attached property on the control that uses the custom logic.

The VisualStateManager.VisualStateGroups Attached Property

The VisualStateManager.VisualStateGroups attached property contains VisualStateGroup objects. Each VisualStateGroup contains a collection of mutually exclusive VisualState objects. You set VisualStateManager.VisualStateGroups on the root element of a ControlTemplate. Setting VisualStateManager.VisualStateGroups is the usage shown as the XAML usage for this class.

Examples

The following example creates a simple ControlTemplate for a Button that contains one Grid. The example sets the VisualStateManager.VisualStateGroups property on the Grid. The VisualStateManager.VisualStateGroups contains one VisualStateGroup, called CommonStates, which defines the MouseOver and NormalVisualState objects. When the user puts the mouse over the Button, the Grid changes from green to red over one half second. When the user moves the mouse away from the button, the Grid immediately changes back to green.

Run this sample


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

        <VisualStateGroup.Transitions>

          <!--Take one half second to trasition to the MouseOver state.-->
          <VisualTransition To="MouseOver" 
                              GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>

        <VisualState x:Name="Normal" />

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


Inheritance Hierarchy

System.Object
  System.Windows.DependencyObject
    System.Windows.VisualStateManager
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Version Information

Silverlight

Supported in: 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.0
Community ContentAdd
Page view tracker