Compartir por


VisualStateManager Clase

Definición

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

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

Ejemplos

En el ejemplo siguiente se crea y Rectangle se agrega un VisualStateGroup objeto con nombre CommonStates a la VisualStateManager.VisualStatesGroups propiedad adjunta. En el ejemplo se definen los MouseOver objetos y NormalVisualState en .CommonStatesVisualStateGroup Cuando el usuario mueve el puntero del mouse sobre Rectangle, cambia de rojo a verde a medio segundo. Cuando el usuario mueve el mouse fuera del rectángulo, cambia Grid inmediatamente a rojo. Tenga en cuenta que el Normal estado no define un Storyboard. No Storyboard es necesario porque cuando se realiza la Rectangle transición del MouseOver estado al Normal estado, el Storyboard para MouseOver se detiene y la Color propiedad de vuelve SolidColorBrush 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 al método para realizar la GoToElementState transición entre estados. Si el rectángulo del ejemplo anterior formaba parte de , ControlTemplateel ejemplo tendría que llamar al 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);
    }
}
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

Comentarios

VisualStateManager permite especificar estados para un control, la apariencia de un control cuando se encuentra en un estado determinado y cuando un control cambia de estado. Por ejemplo, Button un podría tener una apariencia ligeramente diferente cuando se presiona que cuando no se presiona. Dos estados a los que define Button corresponden cuando se presiona ("Pressed") y cuando no es ("Normal"). La apariencia de un control cuando está en un estado se define mediante .VisualState VisualState Contiene una colección de Storyboard objetos que especifican cómo cambia la apariencia del control cuando el control está en ese estado. Para agregar estados visuales a un control, establezca la VisualStateManager.VisualStateGroups propiedad adjunta en el control. Cada VisualStateGroup contiene una colección de VisualState objetos que son mutuamente excluyentes. Es decir, el control siempre se encuentra exactamente en un estado de en cada VisualStateGroup.

VisualStateManager también permite especificar cuándo un control entra en un estado específico. El método al que debe llamar a los estados de cambio depende del escenario. Si crea un control que usa VisualStateManager en , ControlTemplatellame al GoToState método . Para obtener más información sobre cómo crear controles que usan VisualStateManager, vea Crear un control que tenga una apariencia personalizable. Si usa el VisualStateManager elemento fuera de un ControlTemplate objeto (por ejemplo, si usa en VisualStateManager o UserControl en un solo elemento), llame al GoToElementState método . En cualquier caso, VisualStateManager realiza la lógica necesaria para iniciar y detener adecuadamente los guiones gráficos asociados al estado implicado. Por ejemplo, supongamos que un control define los estados State1 y State2, cada uno de los cuales tiene asociado un guión gráfico. Si el control está en State1 y pasa State2 a GoToState o GoToElementState, VisualStateManager inicia el guión gráfico en State2 y detiene el guión gráfico en State1.

Los controles que se incluyen con Windows Presentation Foundation (WPF) usan para cambiar los VisualStateManager estados visuales. Al crear un ControlTemplate para un control que se incluye con WPF, puede agregar VisualState objetos al control ControlTemplate para especificar la apariencia del control en un estado determinado. Para buscar los nombres de los estados visuales de los controles que se incluyen con WPF, vea Estilos y plantillas de control. La lógica del control controla la transición entre estados, por lo que no es necesario hacer nada más que definir los VisualState objetos en el nuevo ControlTemplate. Para obtener más información sobre cómo crear plantillas de control para controles existentes, vea Cómo crear una plantilla para un control.

Si desea implementar su propia lógica para realizar la transición entre estados, debe heredar de VisualStateManager, invalidar el GoToStateCore método y establecer la VisualStateManager.CustomVisualStateManager propiedad adjunta en el control que usa la lógica personalizada.

Constructores

Nombre Description
VisualStateManager()

Inicializa una nueva instancia de la clase VisualStateManager.

Campos

Nombre Description
CustomVisualStateManagerProperty

Identifica la CustomVisualStateManager propiedad de dependencia.

VisualStateGroupsProperty

Identifica la VisualStateGroups propiedad de dependencia.

Propiedades

Nombre Description
DependencyObjectType

Obtiene el DependencyObjectType objeto que encapsula el tipo CLR de esta instancia.

(Heredado de DependencyObject)
Dispatcher

Obtiene el objeto al que DispatcherDispatcherObject está asociado.

(Heredado de DispatcherObject)
IsSealed

Obtiene un valor que indica si esta instancia está actualmente sellada (solo lectura).

(Heredado de DependencyObject)

Propiedades adjuntas

Nombre Description
CustomVisualStateManager

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

VisualStateGroups

Obtiene o establece una colección de VisualStateGroup objetos .

Métodos

Nombre Description
CheckAccess()

Determina si el subproceso que llama tiene acceso a este DispatcherObject.

(Heredado de DispatcherObject)
ClearValue(DependencyProperty)

Borra el valor local de una propiedad. Un identificador especifica DependencyProperty la propiedad que se va a borrar.

(Heredado de DependencyObject)
ClearValue(DependencyPropertyKey)

Borra el valor local de una propiedad de solo lectura. La propiedad que se va a borrar se especifica mediante .DependencyPropertyKey

(Heredado de DependencyObject)
CoerceValue(DependencyProperty)

Coerce el valor de la propiedad de dependencia especificada. Esto se logra invocando cualquier CoerceValueCallback función especificada en metadatos de propiedad para la propiedad de dependencia tal como existe en la llamada DependencyObjecta .

(Heredado de DependencyObject)
Equals(Object)

Determina si un proporcionado DependencyObject es equivalente al objeto actual DependencyObject.

(Heredado de DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Obtiene la CustomVisualStateManager propiedad adjunta.

GetHashCode()

Obtiene un código hash para este DependencyObjectobjeto .

(Heredado de DependencyObject)
GetLocalValueEnumerator()

Crea un enumerador especializado para determinar qué propiedades de dependencia tienen valores establecidos localmente en este DependencyObject.

(Heredado de DependencyObject)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetValue(DependencyProperty)

Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de .DependencyObject

(Heredado de DependencyObject)
GetVisualStateGroups(FrameworkElement)

Obtiene la VisualStateGroups propiedad adjunta.

GoToElementState(FrameworkElement, String, Boolean)

Realiza la transición del elemento entre dos estados. Use este método para realizar la transición de los estados definidos por una aplicación, en lugar de definirlo mediante un control.

GoToState(FrameworkElement, String, Boolean)

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

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

Realiza una transición de un control entre estados.

InvalidateProperty(DependencyProperty)

Vuelve a evaluar el valor efectivo de la propiedad de dependencia especificada.

(Heredado de DependencyObject)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Se invoca cada vez que se ha actualizado el valor efectivo de cualquier propiedad de dependencia en esto DependencyObject . La propiedad de dependencia específica que cambió se notifica en los datos del evento.

(Heredado de DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el CurrentStateChanging evento en el objeto especificado VisualStateGroup .

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

Genera el CurrentStateChanging evento en el objeto especificado VisualStateGroup .

ReadLocalValue(DependencyProperty)

Devuelve el valor local de una propiedad de dependencia, si existe.

(Heredado de DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Establece el valor de una propiedad de dependencia sin cambiar su origen de valor.

(Heredado de DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Establece la CustomVisualStateManager propiedad adjunta.

SetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia.

(Heredado de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Establece el valor local de una propiedad de dependencia de solo lectura, especificada por el DependencyPropertyKey identificador de la propiedad de dependencia.

(Heredado de DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia proporcionada.

(Heredado de DependencyObject)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
VerifyAccess()

Exige que el subproceso de llamada tenga acceso a este DispatcherObject.

(Heredado de DispatcherObject)

Se aplica a