Partager via


VisualStateManager.VisualStateGroups Propriété attachée

Définition

Obtient ou définit une collection d’objets VisualStateGroup.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Exemples

L’exemple suivant crée un simple ControlTemplate pour un Button qui contient un Grid. Il contient également un VisualStateGroup nommé CommonStates, qui définit les MouseOver états et Normal . a VisualStateGroup également un VisualTransition qui spécifie qu’il faut une demi-seconde pour que le Grid passe du vert au rouge lorsque l’utilisateur déplace le pointeur de la souris sur le 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>

Remarques

Chaque VisualStateGroup contient une collection d’objets VisualState . Un VisualState contient une collection d’objets Storyboard qui spécifient comment l’apparence du contrôle change lorsque le contrôle se trouve dans un état donné. Par exemple, une Button peut avoir une apparence légèrement différente lorsqu’elle est enfoncée et quand elle n’est pas enfoncée. Deux états auxquels correspond le Button définit lorsqu’il est appuyé ("Pressed") et quand il n’est pas ("Normal").

Vous ajoutez VisualState à un contrôle en définissant la VisualStateGroups propriété jointe sur le contrôle. Vous placez les états qui s’excluent mutuellement dans le même VisualStateGroup. Par exemple, a CheckBox deux VisualStateGroup objets. L’un contient les états, Normal, MouseOver, Pressedet Disabled. L’autre contient les états , Checked, UnCheckedet Indeterminate. Le CheckBox peut être dans des états MouseOver et UnChecked en même temps, mais il ne peut pas être dans les MouseOver états et Pressed en même temps.

Bien que vous puissiez ajouter VisualState des objets à n’importe quel élément, ils sont particulièrement utiles pour permettre à d’autres personnes de redéfinir le comportement visuel d’un Control. Si vous créez un contrôle personnalisé qui utilise un ControlTemplate, vous pouvez spécifier les états dans lesquels le contrôle peut se trouver en ajoutant un TemplateVisualStateAttribute à sa définition de classe. Toute personne qui crée un nouveau ControlTemplate pour votre contrôle peut ensuite ajouter VisualState des objets au modèle. Les états ayant le même System.Windows.TemplateVisualStateAttribute.GroupName appartiennent dans le même VisualStateGroup.

Pour plus d’informations sur l’utilisation VisualStateGroup d’objets dans un ControlTemplate, consultez Personnalisation de l’apparence d’un contrôle existant en créant un ControlTemplate. Pour plus d’informations sur la création de contrôles qui utilisent , VisualStateManagerconsultez Création d’un contrôle ayant une apparence personnalisable.

S’applique à