VisualStateManager VisualStateManager VisualStateManager VisualStateManager Class

Definition

Administra estados y la lógica para la transición entre estados de los controles. Manages states and the logic for transitioning between states for controls.

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

Examples

En el ejemplo siguiente se crea un Rectangle y agrega un VisualStateGroup denominado CommonStates a la VisualStateManager.VisualStatesGroups propiedad adjunta.The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. El ejemplo se define la MouseOver y Normal VisualState objetos en el CommonStates VisualStateGroup.The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. Cuando el usuario mueve el puntero del mouse sobre el Rectangle, cambia de rojo a verde durante medio segundo.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. Cuando el usuario mueve el mouse fuera del rectángulo, el Grid inmediatamente cambios de vuelta a rojo.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Tenga en cuenta que el Normal estado no define una Storyboard.Note that the Normal state does not define a Storyboard. Un Storyboard no es necesario porque cuando el Rectangle realiza la transición desde el MouseOver estado el Normal estado, el Storyboard para MouseOver se detiene y la Color propiedad para el SolidColorBrush devuelve en rojo.A Storyboard is not required because when the Rectangle transitions from the MouseOver state to the Normal state, the Storyboard for MouseOver is stopped and the Color property for the SolidColorBrush returns to red.

<Rectangle Name="rect" 
           Width="100" Height="100"
           MouseEnter="rect_MouseEvent" 
           MouseLeave="rect_MouseEvent">
  <VisualStateManager.VisualStateGroups>
    <VisualStateGroup Name="MouseStates">
      <VisualState Name="MouseEnter">
        <Storyboard>
          <ColorAnimation To="Green" 
                          Storyboard.TargetName="rectBrush" 
                          Storyboard.TargetProperty="Color"/>
        </Storyboard>
      </VisualState>
      <VisualState Name="MouseLeave" />
      <VisualStateGroup.Transitions>
        <VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>

        <VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
          <VisualTransition.GeneratedEasingFunction>
            <ExponentialEase EasingMode="EaseOut" Exponent="10"/>
          </VisualTransition.GeneratedEasingFunction>
        </VisualTransition>

      </VisualStateGroup.Transitions>
    </VisualStateGroup>
  </VisualStateManager.VisualStateGroups>

  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectBrush" Color="Red"/>
  </Rectangle.Fill>
</Rectangle>

El ejemplo siguiente muestra el controlador de eventos que se define en el ejemplo anterior y llama el GoToElementState método para realizar la transición entre Estados.The following example shows the event handler that is defined in the previous example and calls the GoToElementState method to transition between states. Si el rectángulo en el ejemplo anterior formaba parte de un ControlTemplate, el ejemplo tendría que llamar a la GoToState método.If the rectangle in the previous example was part of a ControlTemplate, the example would have to call the GoToState method.

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
    If rect.IsMouseOver Then
        VisualStateManager.GoToElementState(rect, "MouseEnter", True)
    Else
        VisualStateManager.GoToElementState(rect, "MouseLeave", True)
    End If
End Sub

Remarks

El VisualStateManager le permite especificar los Estados para un control, la apariencia de un control cuando se encuentra en un estado determinado, y cuando un control cambia de estado.The VisualStateManager enables you to specify states for a control, the appearance of a control when it is in a certain state, and when a control changes states. Por ejemplo, un Button podría tener un aspecto ligeramente diferente cuando se presiona que cuando no está presionado.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Dos Estados que el Button define corresponden a cuando se presiona ("Pressed") y cuando no lo es ("Normal").Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal"). La apariencia de un control cuando se encuentra en un estado se define mediante un VisualState.The appearance of a control when it is in a state is defined by a VisualState. Un VisualState contiene una colección de Storyboard objetos que especifican cómo se cambia la apariencia del control cuando el control está en ese estado.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. Agregar estados visuales a un control estableciendo la VisualStateManager.VisualStateGroups propiedad adjunta en el control.You add visual states to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. Cada VisualStateGroup contiene una colección de VisualState objetos que son mutuamente excluyentes.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. Es decir, el control siempre está en exactamente un estado de en cada VisualStateGroup.That is, the control is always in exactly one state of in each VisualStateGroup.

El VisualStateManager también le permite especificar cuándo un control entra en un estado específico.The VisualStateManager also enables you to specify when a control enters a specific state. El método que se debe llamar para cambiar los Estados depende de su escenario.The method that you should call to change states depends on your scenario. Si crea un control que utiliza el VisualStateManager en su ControlTemplate, llame a la GoToState método.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. Para obtener más información sobre cómo crear controles que usan el VisualStateManager, consulte crear un Control que tiene una apariencia personalizable.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. Si usa el VisualStateManager fuera de un ControlTemplate (por ejemplo, si usa un VisualStateManager en un UserControl o en un único elemento), llame a la GoToElementState método.If you use the VisualStateManager outside of a ControlTemplate (for example, if you use a VisualStateManager in a UserControl or in a single element), call the GoToElementState method. En cualquier caso, el VisualStateManager lleva a cabo la lógica necesaria para iniciar y detener los guiones gráficos que están asociados con el estado relacionado apropiadamente.In either case, the VisualStateManager performs the logic that is required to appropriately start and stop the storyboards that are associated with the involved state. Por ejemplo, suponga que un control define los Estados, State1 y State2, cada uno de los cuales tiene un guión gráfico asociado con él.For example, suppose that a control defines the states, State1 and State2, each of which has a storyboard associated with it. Si el control está en State1 y pasar State2 a GoToState o GoToElementState, VisualStateManager inicia el guión gráfico State2 y detiene el guión gráfico en State1.If the control is in State1 and you pass State2 to GoToState or GoToElementState, the VisualStateManager starts the storyboard in State2 and stops the storyboard in State1.

Los controles que se incluyen con Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) usar el VisualStateManager para cambiar los estados visuales.Controls that are included with Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) use the VisualStateManager to change visual states. Cuando creas un ControlTemplate para un control que se incluye con WPFWPF, puede agregar VisualState objetos para el control ControlTemplate para especificar la apariencia del control en un estado determinado.When you create a ControlTemplate for a control that is included with WPFWPF, you can add VisualState objects to the control's ControlTemplate to specify the control's appearance in a certain state. Para buscar los nombres de los estados visuales para los controles que se incluyen con WPFWPF, consulte estilos y plantillas.To find the names of the visual states for the controls that are included with WPFWPF, see Control Styles and Templates. Definen controladores de lógica del control realizando la transición entre Estados, por lo que no es necesario hacer nada más que el VisualState objetos en el nuevo ControlTemplate.The control's logic handles transitioning between states, so you do not need to do anything other than define the VisualState objects in the new ControlTemplate. Para obtener más información sobre cómo crear plantillas de control para los controles existentes, vea personalizar la apariencia de un Control existente creando una clase ControlTemplate.For more information about how to create control templates for existing controls, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate.

Si desea implementar su propia lógica para realizar la transición entre Estados, debe heredar de VisualStateManager, invalidar el GoToStateCore método y establezca el VisualStateManager.CustomVisualStateManager propiedad adjunta en el control que utiliza la lógica personalizada.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.

Constructors

VisualStateManager() VisualStateManager() VisualStateManager() VisualStateManager()

Inicializa una nueva instancia de la clase VisualStateManager. Initializes a new instance of the VisualStateManager class.

Fields

CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty

Identifica la propiedad de dependencia CustomVisualStateManager. Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty

Identifica la propiedad de dependencia System.Windows.VisualStateManager.VisualStateGroups. Identifies the System.Windows.VisualStateManager.VisualStateGroups dependency property.

Attached Properties

CustomVisualStateManager CustomVisualStateManager CustomVisualStateManager CustomVisualStateManager

Obtiene o establece el objeto VisualStateManager que realiza la transición entre los estados de un control. Gets or sets the VisualStateManager object that transitions between the states of a control.

Methods

CheckAccess() CheckAccess() CheckAccess() CheckAccess()

Determina si el subproceso de la llamada tiene acceso a DispatcherObject. Determines whether the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)
ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty)

Borra el valor local de una propiedad. Clears the local value of a property. La propiedad que se va a borrar se especifica mediante un identificador DependencyProperty. The property to be cleared is specified by a DependencyProperty identifier.

(Inherited from DependencyObject)
ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey)

Borra el valor local de una propiedad de solo lectura. Clears the local value of a read-only property. La propiedad que se va a borrar se especifica mediante un DependencyPropertyKey. The property to be cleared is specified by a DependencyPropertyKey.

(Inherited from DependencyObject)
CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) CoerceValue(DependencyProperty)

Convierte el valor de la propiedad de dependencia especificada. Coerces the value of the specified dependency property. Esto se logra invocando cualquier función CoerceValueCallback especificada en los metadatos de la propiedad de dependencia tal como existe en la clase DependencyObject que llama. This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Inherited from DependencyObject)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si un objeto DependencyObject proporcionado es equivalente al objeto DependencyObject actual. Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Inherited from DependencyObject)
GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement)

Obtiene la propiedad adjunta CustomVisualStateManager. Gets the CustomVisualStateManager attached property.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Obtiene un código hash de este objeto DependencyObject. Gets a hash code for this DependencyObject.

(Inherited from DependencyObject)
GetLocalValueEnumerator() GetLocalValueEnumerator() GetLocalValueEnumerator() GetLocalValueEnumerator()

Crea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en DependencyObject. Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Inherited from DependencyObject)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual. Gets the Type of the current instance.

(Inherited from Object)
GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty)

Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de un DependencyObject. Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Inherited from DependencyObject)
GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement)

Obtiene la propiedad adjunta System.Windows.VisualStateManager.VisualStateGroups. Gets the System.Windows.VisualStateManager.VisualStateGroups attached property.

GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean)

Realiza la transición del elemento entre dos estados. Transitions the element between two states. Utilice este método para la transición de estados definidos por una aplicación, en lugar de definidos por un control. Use this method to transition states that are defined by an application, rather than defined by a control.

GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean)

Realiza la transición del control entre dos estados. Transitions the control between two states. Use este método para pasar de un estado a otro los controles que tengan ControlTemplate. Use this method to transition states on control that has a ControlTemplate.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

Realiza la transición de un control entre estados. Transitions a control between states.

InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty)

Vuelve a evaluar el valor efectivo para la propiedad de dependencia especificada. Re-evaluates the effective value for the specified dependency property

(Inherited from DependencyObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del Object actual. Creates a shallow copy of the current Object.

(Inherited from Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs)

Se invoca cada vez que se actualiza el valor efectivo de una propiedad de dependencia de este control DependencyObject. Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. La propiedad de dependencia específica que cambió se notifica en los datos de evento. The specific dependency property that changed is reported in the event data.

(Inherited from DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el evento CurrentStateChanging en el objeto VisualStateGroup especificado. Raises the CurrentStateChanging event on the specified VisualStateGroup object.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el evento CurrentStateChanging en el objeto VisualStateGroup especificado. Raises the CurrentStateChanging event on the specified VisualStateGroup object.

ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty)

Devuelve el valor local de una propiedad de dependencia, si existe. Returns the local value of a dependency property, if it exists.

(Inherited from DependencyObject)
SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object)

Establece el valor de una propiedad de dependencia sin cambiar el origen de su valor. Sets the value of a dependency property without changing its value source.

(Inherited from DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Establece la propiedad adjunta CustomVisualStateManager. Sets the CustomVisualStateManager attached property.

SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia. Sets the local value of a dependency property, specified by its dependency property identifier.

(Inherited from DependencyObject)
SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object)

Establece el valor local de una propiedad de dependencia de solo lectura, especificado por el identificador DependencyPropertyKey de la propiedad de dependencia. Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Inherited from DependencyObject)
ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty)

Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia suministrada. Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Inherited from DependencyObject)
ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual. Returns a string that represents the current object.

(Inherited from Object)
VerifyAccess() VerifyAccess() VerifyAccess() VerifyAccess()

Exige que el subproceso de la llamada tenga acceso a DispatcherObject. Enforces that the calling thread has access to this DispatcherObject.

(Inherited from DispatcherObject)

Properties

DependencyObjectType DependencyObjectType DependencyObjectType DependencyObjectType

Obtiene el objeto DependencyObjectType que ajusta el tipo CLRCLR de esta instancia. Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(Inherited from DependencyObject)
Dispatcher Dispatcher Dispatcher Dispatcher

Obtiene el objeto Dispatcher al que está asociado DispatcherObject. Gets the Dispatcher this DispatcherObject is associated with.

(Inherited from DispatcherObject)
IsSealed IsSealed IsSealed IsSealed

Obtiene un valor que indica si esta instancia está actualmente sellada (es de solo lectura). Gets a value that indicates whether this instance is currently sealed (read-only).

(Inherited from DependencyObject)

Applies to