Click to Rate and Give Feedback
MSDN
MSDN Library
Web Development
Silverlight
Silverlight 3
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Silverlight 3

Other versions are also available for the following:
.NET Framework Class Library for Silverlight
VisualStateManager Class

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

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)
Visual Basic (Declaration)
Public Class VisualStateManager _
    Inherits DependencyObject
Visual Basic (Usage)
Dim instance As VisualStateManager
C#
public class VisualStateManager : DependencyObject
XAML Object Element Usage
<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.

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.

The vsm Prefix

vsm is aprefix that maps to the System.Windows namespace and assembly. The vsm prefix is assigned by some tools and designer scenarios when producing the XAML for visual states in a template. For the prefix vsm, the mapping is declared as xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows".

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 Normal VisualState 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

XAML
<ControlTemplate TargetType="Button"
                 xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows">
  <Grid >
    <vsm:VisualStateManager.VisualStateGroups>
      <vsm:VisualStateGroup x:Name="CommonStates">

        <vsm:VisualStateGroup.Transitions>

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

        <vsm:VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            mouse is over the button.-->
        <vsm:VisualState x:Name="MouseOver">
          <Storyboard>
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
                            Storyboard.TargetProperty="Color" To="Red" />
          </Storyboard>
        </vsm:VisualState>
      </vsm:VisualStateGroup>
    </vsm:VisualStateManager.VisualStateGroups>
    <Grid.Background>
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
    </Grid.Background>
  </Grid>
</ControlTemplate>
System..::.Object
  System.Windows..::.DependencyObject
    System.Windows..::.VisualStateManager
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

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

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker