Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase VisualStateManager

 

Publicado: octubre de 2016

Administra los Estados y la lógica para realizar la transición entre Estados de los controles.

Espacio de nombres:   System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)


public class VisualStateManager : DependencyObject

NombreDescripción
System_CAPS_pubmethodVisualStateManager()

Inicializa una nueva instancia de la clase VisualStateManager.

NombreDescripción
System_CAPS_pubpropertyDependencyObjectType

Obtiene el DependencyObjectType que ajusta el CLR tipo de esta instancia. (Heredado de DependencyObject).

System_CAPS_pubpropertyDispatcher

Obtiene el Dispatcher Esto DispatcherObject está asociado.(Heredado de DispatcherObject).

System_CAPS_pubpropertyIsSealed

Obtiene un valor que indica si esta instancia está actualmente sellada (sólo lectura).(Heredado de DependencyObject).

NombreDescripción
System_CAPS_pubpropertySystem_CAPS_staticCustomVisualStateManager

Obtiene o establece la VisualStateManager objeto que realiza la transición entre los Estados de un control.

System_CAPS_pubpropertySystem_CAPS_staticVisualStateGroups

Obtiene o establece una colección de objetos VisualStateGroup.

NombreDescripción
System_CAPS_pubmethodCheckAccess()

Determina si el subproceso de llamada tiene acceso a este DispatcherObject.(Heredado de DispatcherObject).

System_CAPS_pubmethodClearValue(DependencyProperty)

Borra el valor local de una propiedad. La propiedad que se va a borrar se especifica mediante un identificador DependencyProperty.(Heredado de DependencyObject).

System_CAPS_pubmethodClearValue(DependencyPropertyKey)

Borra el valor local de una propiedad de solo lectura. La propiedad que se va a borrar se especifica mediante un DependencyPropertyKey.(Heredado de DependencyObject).

System_CAPS_pubmethodCoerceValue(DependencyProperty)

Convierte el valor de la propiedad de dependencia especificada. 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.(Heredado de DependencyObject).

System_CAPS_pubmethodEquals(Object)

Determina si un proporcionado DependencyObject es equivalente a la actual DependencyObject.(Heredado de DependencyObject).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de que sea reclamado por la recolección de elementos no utilizados.(Heredado de Object).

System_CAPS_pubmethodSystem_CAPS_staticGetCustomVisualStateManager(FrameworkElement)

Obtiene el CustomVisualStateManager propiedad adjunta.

System_CAPS_pubmethodGetHashCode()

Obtiene un código hash de este objeto DependencyObject.(Heredado de DependencyObject).

System_CAPS_pubmethodGetLocalValueEnumerator()

Crea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en este DependencyObject.(Heredado de DependencyObject).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodGetValue(DependencyProperty)

Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de un DependencyObject.(Heredado de DependencyObject).

System_CAPS_pubmethodSystem_CAPS_staticGetVisualStateGroups(FrameworkElement)

Obtiene el VisualStateManager.VisualStateGroups propiedad adjunta.

System_CAPS_pubmethodSystem_CAPS_staticGoToElementState(FrameworkElement, String, Boolean)

Realiza la transición del elemento entre dos Estados. Utilice este método para los Estados de transición definidos por una aplicación, en lugar de definido por un control.

System_CAPS_pubmethodSystem_CAPS_staticGoToState(FrameworkElement, String, Boolean)

Realiza la transición del control entre dos estados. Utilice este método para los Estados de transición en el control que tiene un ControlTemplate.

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

Realiza la transición de un control entre Estados.

System_CAPS_pubmethodInvalidateProperty(DependencyProperty)

Vuelve a evaluar el valor efectivo de la propiedad de dependencia especificada(Heredado de DependencyObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodOnPropertyChanged(DependencyPropertyChangedEventArgs)

Se invoca cuando se actualiza el valor efectivo de alguna propiedad de dependencia en este DependencyObject. La propiedad de dependencia específica que cambió se notifica en los datos de evento.(Heredado de DependencyObject).

System_CAPS_protmethodRaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el CurrentStateChanging evento en especificado VisualStateGroup objeto.

System_CAPS_protmethodRaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el CurrentStateChanging evento en especificado VisualStateGroup objeto.

System_CAPS_pubmethodReadLocalValue(DependencyProperty)

Devuelve el valor local de una propiedad de dependencia, si existe.(Heredado de DependencyObject).

System_CAPS_pubmethodSetCurrentValue(DependencyProperty, Object)

Establece el valor de una propiedad de dependencia sin cambiar el origen de su valor.(Heredado de DependencyObject).

System_CAPS_pubmethodSystem_CAPS_staticSetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Establece el CustomVisualStateManager propiedad adjunta.

System_CAPS_pubmethodSetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia.(Heredado de DependencyObject).

System_CAPS_pubmethodSetValue(DependencyPropertyKey, Object)

Establece el valor local de una propiedad de dependencia de solo lectura, especificado por el identificador DependencyPropertyKey de la propiedad de dependencia.(Heredado de DependencyObject).

System_CAPS_protmethodShouldSerializeProperty(DependencyProperty)

Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia suministrada.(Heredado de DependencyObject).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa el objeto actual.(Heredado de Object).

System_CAPS_pubmethodVerifyAccess()

Exige que el subproceso que realiza la llamada tiene acceso a este DispatcherObject.(Heredado de DispatcherObject).

NombreDescripción
System_CAPS_pubfieldSystem_CAPS_staticCustomVisualStateManagerProperty

Identifica la propiedad de dependencia CustomVisualStateManager.

System_CAPS_pubfieldSystem_CAPS_staticVisualStateGroupsProperty

Identifica la propiedad de dependencia VisualStateGroups.

El VisualStateManager permite especificar los Estados de un control, la apariencia de un control cuando se encuentra en un estado determinado y cuando un control cambia de estado. Por ejemplo, un Button podría tener un aspecto ligeramente diferente cuando se presiona que cuando no está presionado. Dos Estados que el Button define corresponden a cuando se presiona ("Pressed") y cuando no lo es ("Normal"). Define la apariencia de un control cuando se encuentra en un estado de un 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. Agregar estados visuales a un control estableciendo la VisualStateManager.VisualStateGroups propiedad adjunta en el control. Cada VisualStateGroup contiene una colección de VisualState objetos que se excluyen mutuamente. Es decir, el control siempre en exactamente un estado en cada VisualStateGroup.

El VisualStateManager también le permite especificar cuándo un control entra en un estado específico. El método que debería llamar para cambiar el estado depende de su escenario. Si crea un control que utiliza la VisualStateManager en su ControlTemplate, llame a la GoToState (método). Para obtener más información sobre cómo crear controles que usan el VisualStateManager, consulte crear un Control que tiene una apariencia personalizable. Si utiliza el VisualStateManager fuera de un ControlTemplate (por ejemplo, si utiliza un VisualStateManager en un UserControl o un elemento único), llamar a la GoToElementState (método). En cualquier caso, el VisualStateManager ejecuta la lógica necesaria para iniciar y detener los guiones gráficos que están asociados al estado relacionado apropiadamente. Por ejemplo, suponga que un control define los Estados, State1 y State2, cada uno de los cuales tiene un guión gráfico asociado. Si el control está en State1 y se pasa State2 a GoToState o GoToElementState, el VisualStateManager inicia el guión gráfico State2 y detiene el guión gráfico en State1.

Controles que se incluyen con Windows Presentation Foundation (WPF) usar el VisualStateManager para cambiar los estados visuales. Cuando se crea un ControlTemplate para un control que se incluye con WPF, puede agregar VisualState objetos para el control ControlTemplate para especificar la apariencia del control en un estado determinado. Para buscar los nombres de los estados visuales para los controles que se incluyen con WPF, consulte plantillas y estilos de Control. Definen la lógica controladores de transición entre Estados, por lo que no es necesario hacer nada más que el VisualState objetos en el nuevo 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.

Si desea implementar su propia lógica para realizar la transición entre Estados, debe heredar de VisualStateManager, reemplace el GoToStateCore (método) y establezca el VisualStateManager.CustomVisualStateManager propiedad adjunta en el control que utiliza la lógica personalizada.

En el ejemplo siguiente se crea un Rectangle y agrega un VisualStateGroup denominado CommonStates a la VisualStateManager.VisualStatesGroups propiedad adjunta. En el ejemplo se define la MouseOver y NormalVisualState objetos en el CommonStatesVisualStateGroup. Cuando el usuario mueve el puntero del mouse sobre la Rectangle, cambia de rojo a verde durante medio segundo. Cuando el usuario mueve el mouse fuera del rectángulo, el Grid inmediatamente cambios de nuevo en rojo. Tenga en cuenta que el Normal estado no define una Storyboard. Un Storyboard no es necesario porque cuando el Rectangle realiza la transición de la MouseOver estado el Normal estado, el Storyboard para MouseOver se detiene y la Color propiedad para el SolidColorBrush devuelve a rojo.

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

En el ejemplo siguiente se muestra el controlador de eventos que se define en el ejemplo anterior y llama el GoToElementState método de transición entre Estados. Si el rectángulo en el ejemplo anterior formaba parte de un ControlTemplate, el ejemplo tendría que llamar a la GoToState (método).

private void rect_MouseEvent(object sender, MouseEventArgs e)
{
    if (rect.IsMouseOver)
    {
        VisualStateManager.GoToElementState(rect, "MouseEnter", true);
    }
    else
    {
        VisualStateManager.GoToElementState(rect, "MouseLeave", true);
    }
}

.NET Framework
Disponible desde 4.0
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: