VisualStateGroup Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 :
- Déclencheur personnalisé dérivé de StateTriggerBase
- AdaptiveTrigger activé en raison de MinWindowWidth
- 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 |
| DispatcherQueue |
Obtient le |
| 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. |