VisualStateManager Clase

Definición

Administra estados y la lógica para la transición entre estados de 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 objeto con nombre VisualStateGroupCommonStates a la VisualStateManager.VisualStatesGroups propiedad adjunta. En el ejemplo se definen los MouseOver objetos y NormalVisualState de .CommonStatesVisualStateGroup Cuando el usuario mueve el puntero del mouse sobre Rectangle, cambia de rojo a verde a medio segundo. Cuando el usuario aleja el mouse 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 , se detiene el Storyboard objeto para MouseOver y la Color propiedad de SolidColorBrush vuelve 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, un Button podría tener una apariencia ligeramente diferente cuando se presiona que cuando no se presiona. Dos estados a los que Button define corresponden cuando se presiona ("Pressed") y cuando no es ("Normal"). La apariencia de un control cuando está en un estado se define mediante .VisualState Contiene VisualState 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 está en exactamente 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 para cambiar los estados depende de su escenario. Si crea un control que usa VisualStateManager en su ControlTemplate, llame 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 fuera de un elemento ControlTemplate (por ejemplo, si usa un VisualStateManager en o UserControl en un solo elemento), llame al GoToElementState método . En cualquier caso, VisualStateManager realiza la lógica necesaria para iniciar y detener correctamente 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 VisualStateManager cambiar los estados visuales. Al crear un ControlTemplate para un control que se incluye con WPF, puede agregar VisualState objetos al control para especificar la apariencia del control ControlTemplate en un estado determinado. Para buscar los nombres de los estados visuales de los controles que se incluyen con WPF, vea Estilos de control y plantillas. La lógica del control controla la transición entre estados, por lo que no es necesario hacer nada que no sea definir los VisualState objetos en el nuevo ControlTemplate. Para obtener más información sobre cómo crear plantillas de control para los controles existentes, vea Personalización de la apariencia de un control existente mediante la creación de una clase ControlTemplate.

Si desea implementar su propia lógica para 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

VisualStateManager()

Inicializa una nueva instancia de la clase VisualStateManager.

Campos

CustomVisualStateManagerProperty

Identifica la propiedad de dependencia CustomVisualStateManager.

VisualStateGroupsProperty

Identifica la propiedad de dependencia VisualStateGroups.

Propiedades

DependencyObjectType

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

(Heredado de DependencyObject)
Dispatcher

Obtiene el objeto Dispatcher al que está asociado DispatcherObject.

(Heredado de DispatcherObject)
IsSealed

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

(Heredado de DependencyObject)

Propiedades adjuntas

CustomVisualStateManager

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

VisualStateGroups

Obtiene o establece una colección de objetos VisualStateGroup.

Métodos

CheckAccess()

Determina si el subproceso de la llamada tiene acceso a DispatcherObject.

(Heredado de DispatcherObject)
ClearValue(DependencyProperty)

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

(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 un DependencyPropertyKey.

(Heredado de DependencyObject)
CoerceValue(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)
Equals(Object)

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

(Heredado de DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Obtiene la propiedad adjunta CustomVisualStateManager.

GetHashCode()

Obtiene un código hash de este objeto DependencyObject.

(Heredado de DependencyObject)
GetLocalValueEnumerator()

Crea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en 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 un DependencyObject.

(Heredado de DependencyObject)
GetVisualStateGroups(FrameworkElement)

Obtiene la propiedad adjunta VisualStateGroups.

GoToElementState(FrameworkElement, String, Boolean)

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

GoToState(FrameworkElement, String, Boolean)

Realiza la transición del control entre dos estados. Use este método para pasar de un estado a otro los controles que tengan ControlTemplate.

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

Realiza la transición de un control entre estados.

InvalidateProperty(DependencyProperty)

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

(Heredado de DependencyObject)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnPropertyChanged(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)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera el evento CurrentStateChanging en el objeto VisualStateGroup especificado.

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

Genera el evento CurrentStateChanging en el objeto VisualStateGroup especificado.

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 el origen del valor.

(Heredado de DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Establece la propiedad adjunta CustomVisualStateManager.

SetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia, especificado mediante el identificador de la propiedad de dependencia.

(Heredado de DependencyObject)
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.

(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 especificada.

(Heredado de DependencyObject)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
VerifyAccess()

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

(Heredado de DispatcherObject)

Se aplica a