Compartir vía


VisualStateManager.VisualStateGroups Propiedad adjunta

Definición

Obtiene o establece una colección de objetos VisualStateGroup.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Ejemplos

En el ejemplo siguiente se crea un objeto simple ControlTemplate para un Button objeto que contiene uno Grid. También contiene un VisualStateGroup objeto denominado CommonStates, que define los MouseOver estados y Normal . VisualStateGroup También tiene un VisualTransition valor de tipo que especifica que tarda una mitad de segundo en Grid cambiar de 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>

Comentarios

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

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

Aunque puede agregar VisualState objetos a cualquier elemento, son una manera especialmente útil de permitir que otros usuarios 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 el control agregando una TemplateVisualStateAttribute en su definición de clase. A continuación, cualquier persona que cree un nuevo ControlTemplate para el control puede agregar VisualState objetos a la plantilla. Los estados con el mismo System.Windows.TemplateVisualStateAttribute.GroupName pertenecen a la misma VisualStateGroup.

Para obtener más información sobre cómo usar VisualStateGroup objetos en , ControlTemplatevea Personalización de la apariencia de un control existente mediante la creación de un controlTemplate. Para obtener más información sobre cómo crear controles que usan VisualStateManager, vea Crear un control que tenga una apariencia personalizable.

Se aplica a