VisualStateGroup Classe

Définition

Contient des objets VisualState mutuellement exclusifs et des objets VisualTransition utilisés pour passer d’un état à un autre.

public ref class VisualStateGroup sealed : DependencyObject
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="States")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class VisualStateGroup final : DependencyObject
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="States")]
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class VisualStateGroup : DependencyObject
Public NotInheritable Class VisualStateGroup
Inherits DependencyObject
<VisualStateManager.VisualStateGroups>
   <VisualStateGroup x:Name="groupname" ...>
     oneOrMoreVisualStates
   </VisualStateGroup>
   <!--- other peer VisualStateGroup's here ... -->
</VisualStateManager.VisualStateGroups>
Héritage
Object Platform::Object IInspectable DependencyObject VisualStateGroup
Attributs

Exemples

Cet exemple crée un ControlTemplate simple pour un bouton qui contient une grille. Il contient également un VisualStateGroup appelé « CommonStates », qui définit les états « PointerOver » et « Normal ». Il VisualStateGroup a également un VisualTransition qui spécifie qu’il faut une demi-seconde pour que le Grid passage du vert au rouge lorsque l’utilisateur place le pointeur sur le 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>

Remarques

Chaque VisualStateGroup déclaré en XAML dans le cadre d’un modèle de contrôle doit toujours avoir un attribut x :Name défini dessus. Chaque chaîne de nom utilisée dans l’ensemble d’un modèle de VisualStateGroups contrôle doit être unique dans ce modèle. Toutefois, il est courant d’utiliser les mêmes noms de groupe pour différents contrôles. Par exemple, presque tous les modèles de contrôle existants ont un VisualStateGroup avec x:Name attribute « CommonStates ».

L’ensemble d’états visuels dans chacun d’eux VisualStateGroup doit être mutuellement exclusif dans le groupe. En d’autres termes, le contrôle doit utiliser exactement l’un des états visuels de chacun de ses groupes définis VisualStateGroup à tout moment. Chaque fois qu’un contrôle est destiné à être simultanément dans deux états, assurez-vous que les deux états se trouvent dans des groupes différents. Par exemple, il est possible qu’un contrôle de liste déroulante soit concentré simultanément et que sa liste déroulante soit ouverte. Dans une conception d’état visuel correcte, vous disposeriez d’un élément distinct VisualStateGroup pour chaque état afin qu’ils puissent être actifs à la fois. Ces groupes peuvent avoir des noms tels que « FocusStates » et « DropDownStates ».

Chaque fois que vous définissez un VisualStateGroup comportement de table séquentiel temporaire dans l’un de ses éléments VisualState , assurez-vous que ce groupe contient également une seconde VisualState qui peut être appelée pour annuler l’état précédent. Cela peut être aussi simple que de déclarer la seconde VisualState sans storyboard du tout, juste un attribut x :Name.

La valeur d’attribut x :Name que vous définissez pour un VisualStateGroup appel à VisualStateManager.GoToState n’est pas utilisée ; à la place, il s’agit x:Name attribute d’un VisualState utilisé pour VisualStateManager.GoToState. Toute personne qui utilise VisualStateManager.GoToState doit connaître tous les groupes et états disponibles, afin que chaque appel passe correctement d’anciens états à de nouveaux états au sein d’un groupe.

En plus d’un ensemble d’éléments VisualState , il VisualStateGroup peut également définir un ensemble d’éléments VisualTransition , où chacun VisualTransition se rapporte à au moins un des éléments nommés VisualState définis dans le groupe. En XAML, l’ensemble d’éléments VisualState peut être déclaré en tant qu’éléments enfants de l’élément VisualStateGroupobjet immédiat du . Cela est possible, car la propriété States , qui est la collection d’états visuels, est la propriété de contenu XAML pour VisualStateGroup. En revanche, pour définir la collection de transitions visuelles, vous devez déclarer cette collection dans un élément de propriété VisualStateGroup.Transitions en XAML. Pour plus d’informations sur les propriétés de contenu XAML, consultez le guide de syntaxe XAML.

Lorsque vous utilisez StateTriggers pour contrôler les états visuels , le moteur de déclencheur utilise les règles de précédence suivantes pour noter les déclencheurs et déterminer le déclencheur et le VisualState correspondant sont actifs :

  1. Déclencheur personnalisé dérivé de StateTriggerBase
  2. AdaptiveTrigger activé en raison de MinWindowWidth
  3. AdaptiveTrigger activé en raison de MinWindowHeight

S’il existe plusieurs déclencheurs actifs à la fois qui ont un conflit dans le scoring (c’est-à-dire deux déclencheurs personnalisés actifs), le premier déclaré dans le fichier de balisage est prioritaire.

Remarque : Bien que AdaptiveTrigger dérive de StateTriggerBase, il ne peut être activé que par le biais de la définition de MinWindowWidth et/ou MinWindowHeight.

VisualStateGroup API qui prend en charge l’implémentation personnalisée de VisualStateManager

Une grande partie de l’API VisualStateGroup existe uniquement pour prendre en charge l’implémentation personnalisée de VisualStateManager . Voici : Name, CurrentState, CurrentStateChanging, CurrentStateChanged. Les utilisations les plus courantes des états visuels pour les modèles de contrôle n’auront pas besoin de ces API. En particulier, il n’est pas courant de gérer les événements. La plupart des opérations logiques d’un contrôle doivent impliquer ses propres propriétés et événements. Pour la plupart des scénarios de définition d’application et de contrôle, les modifications d’état visuel qui se produisent au contrôle ne doivent être qu’un résultat final de la logique que le contrôle s’applique à son modèle, et non à un déclencheur pour une autre logique.

Constructeurs

Nom Description
VisualStateGroup()

Initialise une nouvelle instance de la classe VisualStateGroup .

Propriétés

Nom Description
CurrentState

Obtient l’ensemble le plus récent de VisualState à partir d’un appel réussi à la méthode GoToState .

Dispatcher

Retourne null toujours dans une application du Kit de développement logiciel (SDK) d’application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue résultat auquel cet objet est associé. Représente DispatcherQueue une installation qui peut accéder au DependencyObject thread d’interface utilisateur même si le code est initié par un thread non-interface utilisateur.

(Hérité de DependencyObject)
Name

Obtient le nom de VisualStateGroup.

States

Obtient la collection d’objets VisualState mutuellement exclusifs.

Transitions

Obtient la collection d’objets VisualTransition .

Méthodes

Nom Description
ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’applique dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un DependencyObject.

(Hérité de DependencyObject)
ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à une dependencyProperty spécifique sur cette instance DependencyObject .

(Hérité de DependencyObject)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification qui a été précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

Nom Description
CurrentStateChanged

Se produit après qu’un contrôle change d’état différent.

CurrentStateChanging

Se produit lorsqu’un contrôle commence à changer d’état différent.

S’applique à

Voir aussi