
Manages states and the logic for transitioning between states for controls.
Assembly: System.Windows (in System.Windows.dll)
'Declaration Public Class VisualStateManager _ Inherits DependencyObject
'Usage Dim instance As VisualStateManager
<templateRoot> <VisualStateManager.VisualStateGroups> oneOrMoreVisualStateGroups </VisualStateManager.VisualStateGroups> </templateRoot>
XAML Values
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 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.
<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>
System.Windows.DependencyObject
System.Windows.VisualStateManager
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
