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 qui sont 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 Button qui contient une grille. Il contient également un VisualStateGroup
appelé « CommonStates », qui définit les états « PointerOver » 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 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 de dans un modèle de VisualStateGroups
contrôle doit être unique dans ce modèle. 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 des états visuels au sein de chacun VisualStateGroup
doit s’exclure mutuellement 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 simultanément concentré et que sa liste déroulante soit ouverte. Dans une conception d’état visuelle correcte, vous disposeriez d’un élément distinct VisualStateGroup
pour chaque état afin qu’ils puissent tous les deux être actifs à la fois. Ces groupes peuvent avoir des noms tels que « FocusStates » et « DropDownStates ».
Chaque fois que vous définissez un VisualStateGroup
qui active un comportement de table de montage séquentiel temporaire dans l’un de ses éléments VisualState , assurez-vous que le 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 de l’attribut x:Name que vous définissez pour un VisualStateGroup
n’est pas utilisée pour un appel à VisualStateManager.GoToState ; à la x:Name attribute
place, il s’agit 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 des anciens états aux nouveaux états au sein d’un groupe.
En plus d’un ensemble d’éléments VisualState , un VisualStateGroup
peut également définir un ensemble d’éléments VisualTransition , chacun VisualTransition
se rapportant à 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 objet immédiat de .VisualStateGroup
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 quel déclencheur, ainsi que le VisualState correspondant, sera actif :
- Déclencheur personnalisé qui dérive 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 qu’AdaptiveTrigger dérive de StateTriggerBase, il ne peut être activé qu’en définissant MinWindowWidth et/ou MinWindowHeight.
VisualStateGroup API qui prend en charge l’implémentation personnalisée de VisualStateManager
La plupart des API de existent uniquement pour prendre en charge l’implémentation personnalisée de VisualStateGroup
VisualStateManager . Il s’agit notamment de : Name, CurrentState, CurrentStateChanging, CurrentStateChanged. La plupart des utilisations 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 changements d’état visuel qui se produisent sur le contrôle ne doivent être qu’un résultat final de la logique que le contrôle applique à son modèle, et non un déclencheur pour une autre logique.
Constructeurs
VisualStateGroup() |
Initialise une nouvelle instance de la classe VisualStateGroup. |
Propriétés
CurrentState |
Obtient la dernière définition de VisualState à partir d’un appel réussi à la méthode GoToState . |
Dispatcher |
Retourne |
DispatcherQueue |
Obtient le |
Name |
Obtient le nom du VisualStateGroup. |
States |
Obtient la collection d’objets VisualState mutuellement exclusifs. |
Transitions |
Obtient la collection d’objets VisualTransition . |
Méthodes
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’appliquerait 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 à un DependencyProperty spécifique sur ce 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 précédemment inscrite en appelant RegisterPropertyChangedCallback. (Hérité de DependencyObject) |
Événements
CurrentStateChanged |
Se produit après qu’un contrôle passe à un état différent. |
CurrentStateChanging |
Se produit lorsqu’un contrôle commence à passer à un état différent. |