Clase VisualStateGroup
Collapse the table of content
Expand the table of content

VisualStateGroup Class

Contiene objetos VisualState que se excluyen mutuamente y objetos VisualTransition que se usan para ir de un estado a otro.

Herencia

Object
  DependencyObject
    VisualStateGroup

Sintaxis


public sealed class VisualStateGroup : DependencyObject


<VisualStateManager.VisualStateGroups>
   <VisualStateGroup x:Name="groupname" ...>
     oneOrMoreVisualStates
   </VisualStateGroup>
   <!--- other peer VisualStateGroup's here ... -->
</VisualStateManager.VisualStateGroups>

XAML Values

oneOrMoreVisualStates

Uno o más elementos de objeto que es de tipo VisualState.

groupname

Un nombre descriptivo que describe los comportamientos de VisualState que se agrupan por el VisualStateGroup. Vea la sección Comentarios.

Atributos

[ContentProperty("Name=States")]
[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]
[WebHostHidden()]

Members

A continuación se indican los tipos de miembros de VisualStateGroup (Clase):

Constructores

A continuación se indican los constructores de VisualStateGroup (Clase).

ConstructorDescripción
VisualStateGroup Initializes a new instance of the VisualStateGroup class.

 

Eventos

A continuación se indican los eventos de VisualStateGroup (Clase).

EventoDescripción
CurrentStateChanged Occurs after a control changes into a different state.
CurrentStateChanging Occurs when a control begins changing into a different state.

 

Métodos

The VisualStateGroup Clase tiene estos métodos. También hereda métodos de Object Clase.

MétodoDescripción
ClearValue Clears the local value of a dependency property. (Se hereda de DependencyObject)
GetAnimationBaseValue Returns any base value established for a dependency property, which would apply in cases where an animation is not active. (Se hereda de DependencyObject)
GetValue Returns the current effective value of a dependency property from a DependencyObject. (Se hereda de DependencyObject)
ReadLocalValue Returns the local value of a dependency property, if a local value is set. (Se hereda de DependencyObject)
SetValue Sets the local value of a dependency property on a DependencyObject. (Se hereda de DependencyObject)

 

Propiedades

VisualStateGroupClase tiene estas propiedades.

PropiedadTipo de accesoDescripción

CurrentState

De sólo lecturaGets the most recently set VisualState from a successful call to the GoToState method.

Dispatcher

De sólo lecturaGets the CoreDispatcher that this object is associated with. (Se hereda de DependencyObject)

Name

De sólo lecturaGets the name of the VisualStateGroup.

States

De sólo lecturaGets the collection of mutually exclusive VisualState objects.

Transitions

De sólo lecturaGets the collection of VisualTransition objects.

 

Comentarios

Cada clase VisualStateGroup declarada en XAML como parte de una plantilla de control siempre debe tener un x:Name attribute establecido. Cada cadena de nombre usada en el conjunto de VisualStateGroups en una plantilla de control debe ser única en dicha plantilla. Sin embargo, es habitual utilizar los mismos nombres de grupo para varios controles. Por ejemplo, casi todas las plantillas de control existentes tienen una clase VisualStateGroup con el valor x:Name configurado como "CommonStates".

El conjunto de estados visuales de cada objeto VisualStateGroup debe ser mutuamente excluyente en el grupo. En otras palabras, el control siempre debe utilizar exactamente uno de los estados visuales de cada uno de los grupos VisualStateGroup definidos. Siempre que haya un caso donde un control está diseñado para estar simultáneamente en dos estados, asegúrese de que los dos estados están en grupos diferentes. Por ejemplo, es posible que un control desplegable esté enfocado y tenga a la vez su menú desplegable abierto. En un diseño de estados visuales correcto, tendría un objeto VisualStateGroup independiente para cada estado para que ambos puedan estar activos a la vez. Estos grupos pueden tener nombres como "FocusStates" y "DropDownStates".

Siempre que se define un VisualStateGroup que habilita un comportamiento de guion gráfico temporal en uno de sus elementos VisualState, asegúrese de que el grupo también contiene un segundo VisualState al que se puede llamar para cancelar el estado anterior. Esto puede ser tan simple como declarar el segundo objeto VisualState sin ningún Storyboard en absoluto, simplemente x:Name.

El valor x:Name establecido para VisualStateGroup no se utiliza para una llamada a VisualStateManager.GoToState; en su lugar es el x:Name de un objeto VisualState que se utiliza para VisualStateManager.GoToState. Cualquier persona que use el método VisualStateManager.GoToState debe conocer todos los grupos y estados disponibles para que las transiciones de las llamadas de los estados antiguos de grupo a los nuevos puedan realizarse correctamente.

Además de un conjunto de elementos VisualState, un objeto VisualStateGroup también puede definir un conjunto de elementos VisualTransition, donde cada elemento VisualTransition pertenece al menos a uno de los elementos VisualState con nombre definidos en el grupo. En XAML, el conjunto de elementos VisualState puede declararse como elementos secundarios de elemento de objeto inmediato del objeto VisualStateGroup. Esto es posible porque la propiedad States, que es la colección de estados visuales, es la propiedad de contenido XAML para VisualStateGroup. En cambio, para establecer la colección de transiciones visuales, se debe declarar esa colección dentro de un elemento de propiedad VisualStateGroup.Transitions en XAML. Para obtener más información sobre las propiedades del contenido XAML, vea Guía de la sintaxis básica de XAML.

API deVisualStateGroup que admiten la implementación personalizada de VisualStateManager

Muchas de las API de VisualStateGroup existen únicamente para admitir la implementación personalizada de VisualStateManager. Incluyen: Name, CurrentState, CurrentStateChanging, CurrentStateChanged. La usos más comunes de los estados visuales para las plantillas de control no necesitarán estas API. En concreto, no es habitual controlar los eventos. La mayoría de las operaciones lógicas para un control deben incluir sus propias propiedades y eventos. Para la mayoría de los escenarios de definición de aplicaciones y controles, los cambios de estado visual que se producen en el control deben ser únicamente un resultado final de la lógica que el control aplica a su plantilla, no un desencadenador para otra lógica.

Ejemplos

En este ejemplo se crea un objeto ControlTemplate simple para un objeto Button que contiene un objeto Grid. También contiene un grupo VisualStateGroup denominado "CommonStates", que define los estados "PointerOver" y "Normal". VisualStateGroup también tiene un objeto VisualTransition que especifica que Grid tarda medio segundo en cambiar de color verde a rojo cuando el usuario coloca el puntero sobre Button.


<ControlTemplate TargetType="Button">
  <Grid >
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">

        <VisualStateGroup.Transitions>

          <!--Take one half second to transition to the PointerOver state.-->
          <VisualTransition To="PointerOver" 
                              GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>
        
        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            Pointer is over the button.-->
        <VisualState x:Name="PointerOver">
          <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>


Requisitos

Cliente mínimo admitido

Windows 8 [Solo aplicaciones de la Tienda Windows]

Servidor mínimo admitido

Windows Server 2012 [Solo aplicaciones de la Tienda Windows]

Espacio de nombres

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadatos

Windows.winmd

Vea también

DependencyObject
VisualStateManager
VisualState
Inicio rápido: plantillas de control
Animaciones de guion gráfico
Animaciones de guion gráfico para estados visuales
Ejemplo de aplicación de estilo a controles y aplicaciones en XAML

 

 

Mostrar:
© 2017 Microsoft