Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

VisualStateManager.VisualStateGroups (Propiedad asociada)

Obtiene o establece una colección de objetos VisualStateGroup.

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

See GetVisualStateGroups

Valor de propiedad

Tipo: System.Collections.IList
Colección de objetos VisualStateGroup.

Cada VisualStateGroup contiene una colección de objetos VisualState. Un objeto VisualState contiene una colección de objetos Storyboard que especifican cómo cambia el aspecto del control cuando este está en un determinado estado. Por ejemplo, un Button podría tener un aspecto ligeramente diferente cuando se presiona que cuando no se presiona. Dos estados que define Button corresponden a cuando se presiona ("Pressed") y cuando no se presiona ("Normal").

Agregue VisualState a un control estableciendo la propiedad adjunta VisualStateGroups en el control. Coloca estados que se excluyen mutuamente entre sí en el mismo VisualStateGroup. Por ejemplo, CheckBox tiene dos objetos VisualStateGroup. Uno contiene los estados, Normal, MouseOver, Pressed y Disabled. El otro contiene los estados, Checked, UnChecked e Indeterminate. CheckBox puede estar en los estados MouseOver y UnChecked a la vez, pero no puede estar en los estados MouseOver y Pressed a la vez.

Aunque puede agregar objetos VisualState a cualquier elemento, son una manera particularmente útil de permitir que otros vuelvan a definir el comportamiento visual de un Control. Si crea un control personalizado que usa un ControlTemplate, puede especificar en qué estados puede estar ese control agregando TemplateVisualStateAttribute en su definición de clase. A continuación, cualquiera que cree un nuevo ControlTemplate para su control puede agregar objetos VisualState a la plantilla. Los estados con la misma propiedad TemplateVisualStateAttribute.GroupName pertenecen al mismo VisualStateGroup.

Para obtener más información acerca de cómo usar objetos VisualStateGroup en ControlTemplate, vea Personalizar la apariencia de un control existente creando una clase ControlTemplate. Para obtener más información sobre cómo crear controles que usan VisualStateManager, vea Crear un control que tiene una apariencia personalizable.

En el siguiente ejemplo se crea una plantilla ControlTemplate sencilla para un control Button que contiene un control Grid. También contiene un grupo VisualStateGroup con nombre CommonStates, que define los estados MouseOver y Normal. VisualStateGroup también tiene un objeto VisualTransition que especifica que el control Grid tarda medio segundo en cambiar de color verde a rojo cuando el usuario mueve el puntero del mouse sobre Button.


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

        <VisualStateGroup.Transitions>

          <!--Take one half second to trasition to the MouseOver state.-->
          <VisualTransition To="MouseOver" 
            GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>

        <VisualState x:Name="Normal" />

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


.NET Framework

Compatible con: 4

.NET Framework Client Profile

Compatible con: 4

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Mostrar: