VisualStateManager 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.
Gère les états et la logique de transition entre les états pour les contrôles.
public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
- Héritage
Exemples
L’exemple suivant crée un Rectangle et ajoute un VisualStateGroup nommé CommonStates
à la propriété jointe VisualStateManager.VisualStatesGroups
. L’exemple définit les objets MouseOver
et Normal
VisualState dans la CommonStates
VisualStateGroup. Lorsque l’utilisateur déplace le pointeur de la souris sur le Rectangle, il passe du rouge au vert sur une demi-seconde. Lorsque l’utilisateur déplace la souris loin du rectangle, le Grid passe immédiatement en rouge. Notez que l’état Normal
ne définit pas de Storyboard. Un Storyboard n’est pas obligatoire, car lorsque le Rectangle passe de l’état MouseOver
à l’état Normal
, le Storyboard de MouseOver
est arrêté et la propriété Color pour la SolidColorBrush retourne en rouge.
<Rectangle Name="rect"
Width="100" Height="100"
MouseEnter="rect_MouseEvent"
MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseStates">
<VisualState Name="MouseEnter">
<Storyboard>
<ColorAnimation To="Green"
Storyboard.TargetName="rectBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>
<VisualState Name="MouseLeave" />
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
<VisualTransition.GeneratedEasingFunction>
<ExponentialEase EasingMode="EaseOut" Exponent="10"/>
</VisualTransition.GeneratedEasingFunction>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>
L’exemple suivant montre le gestionnaire d’événements qui est défini dans l’exemple précédent et appelle la méthode GoToElementState pour passer d’un état à l’autre. Si le rectangle de l’exemple précédent faisait partie d’un ControlTemplate, l’exemple devait appeler la méthode GoToState.
private void rect_MouseEvent(object sender, MouseEventArgs e)
{
if (rect.IsMouseOver)
{
VisualStateManager.GoToElementState(rect, "MouseEnter", true);
}
else
{
VisualStateManager.GoToElementState(rect, "MouseLeave", true);
}
}
Private Sub rect_MouseEvent(ByVal sender As Object, ByVal e As MouseEventArgs)
If rect.IsMouseOver Then
VisualStateManager.GoToElementState(rect, "MouseEnter", True)
Else
VisualStateManager.GoToElementState(rect, "MouseLeave", True)
End If
End Sub
Remarques
La VisualStateManager vous permet de spécifier des états pour un contrôle, l’apparence d’un contrôle lorsqu’il se trouve dans un état donné et lorsqu’un contrôle change d’état. Par exemple, une Button peut avoir une apparence légèrement différente lorsqu’elle est enfoncée que lorsqu’elle n’est pas enfoncée. Deux états indiquent que la Button correspond au moment où elle est enfoncée ("Pressed"
) et quand elle n’est pas ("Normal"
). L’apparence d’un contrôle lorsqu’il est dans un état est défini par un VisualState. Un VisualState contient une collection d’objets Storyboard qui spécifient la façon dont l’apparence du contrôle change lorsque le contrôle est dans cet état. Vous ajoutez des états visuels à un contrôle en définissant la propriété jointe VisualStateManager.VisualStateGroups
sur le contrôle. Chaque VisualStateGroup contient une collection d’objets VisualState qui s’excluent mutuellement. Autrement dit, le contrôle est toujours dans un état exactement de chaque VisualStateGroup.
Le VisualStateManager vous permet également de spécifier quand un contrôle entre dans un état spécifique. La méthode que vous devez appeler pour modifier les états dépend de votre scénario. Si vous créez un contrôle qui utilise le VisualStateManager dans son ControlTemplate, appelez la méthode GoToState. Pour plus d’informations sur la création de contrôles qui utilisent le VisualStateManager, consultez Création d’un contrôle qui a une apparence personnalisable. Si vous utilisez le VisualStateManager en dehors d’un ControlTemplate (par exemple, si vous utilisez un VisualStateManager dans un UserControl ou dans un seul élément), appelez la méthode GoToElementState. Dans les deux cas, le VisualStateManager effectue la logique nécessaire pour démarrer et arrêter correctement les storyboards associés à l’état impliqué. Par exemple, supposons qu’un contrôle définit les états, State1
et State2
, chacun d’eux ayant un storyboard associé à celui-ci. Si le contrôle se trouve dans State1
et que vous passez State2
à GoToState ou GoToElementState, le VisualStateManager démarre le storyboard dans State2
et arrête le storyboard dans State1
.
Les contrôles inclus dans Windows Presentation Foundation (WPF) utilisent les VisualStateManager pour modifier les états visuels. Lorsque vous créez un ControlTemplate pour un contrôle inclus avec WPF, vous pouvez ajouter des objets VisualState aux ControlTemplate du contrôle pour spécifier l’apparence du contrôle dans un état donné. Pour rechercher les noms des états visuels des contrôles inclus dans WPF, consultez Styles de contrôle et modèles. La logique du contrôle gère la transition entre les états. Vous n’avez donc pas besoin d’effectuer autre chose que de définir les objets VisualState dans la nouvelle ControlTemplate. Pour plus d’informations sur la création de modèles de contrôle pour les contrôles existants, consultez Personnalisation de l’apparence d’un contrôle existant en créant unControlTemplate.
Si vous souhaitez implémenter votre propre logique pour la transition entre les états, vous devez hériter de VisualStateManager, remplacer la méthode GoToStateCore et définir la propriété jointe VisualStateManager.CustomVisualStateManager sur le contrôle qui utilise la logique personnalisée.
Constructeurs
VisualStateManager() |
Initialise une nouvelle instance de la classe VisualStateManager. |
Champs
CustomVisualStateManagerProperty |
Identifie la propriété de dépendance CustomVisualStateManager. |
VisualStateGroupsProperty |
Identifie la propriété de dépendance VisualStateGroups. |
Propriétés
DependencyObjectType |
Obtient le DependencyObjectType qui encapsule le type CLR de cette instance. (Hérité de DependencyObject) |
Dispatcher |
Obtient la Dispatcher cette DispatcherObject est associée. (Hérité de DispatcherObject) |
IsSealed |
Obtient une valeur qui indique si cette instance est actuellement scellée (en lecture seule). (Hérité de DependencyObject) |
Propriétés attachées
CustomVisualStateManager |
Obtient ou définit l’objet VisualStateManager qui passe entre les états d’un contrôle. |
VisualStateGroups |
Obtient ou définit une collection d’objets VisualStateGroup. |
Méthodes
CheckAccess() |
Détermine si le thread appelant a accès à ce DispatcherObject. (Hérité de DispatcherObject) |
ClearValue(DependencyProperty) |
Efface la valeur locale d’une propriété. La propriété à effacer est spécifiée par un identificateur DependencyProperty. (Hérité de DependencyObject) |
ClearValue(DependencyPropertyKey) |
Efface la valeur locale d’une propriété en lecture seule. La propriété à effacer est spécifiée par un DependencyPropertyKey. (Hérité de DependencyObject) |
CoerceValue(DependencyProperty) |
Force la valeur de la propriété de dépendance spécifiée. Pour ce faire, appelez n’importe quelle fonction CoerceValueCallback spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur le DependencyObjectappelant. (Hérité de DependencyObject) |
Equals(Object) |
Détermine si une DependencyObject fournie équivaut à la DependencyObjectactuelle. (Hérité de DependencyObject) |
GetCustomVisualStateManager(FrameworkElement) |
Obtient la propriété jointe CustomVisualStateManager. |
GetHashCode() |
Obtient un code de hachage pour cette DependencyObject. (Hérité de DependencyObject) |
GetLocalValueEnumerator() |
Crée un énumérateur spécialisé pour déterminer quelles propriétés de dépendance ont des valeurs définies localement sur cette DependencyObject. (Hérité de DependencyObject) |
GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
GetValue(DependencyProperty) |
Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject. (Hérité de DependencyObject) |
GetVisualStateGroups(FrameworkElement) |
Obtient la propriété jointe VisualStateGroups. |
GoToElementState(FrameworkElement, String, Boolean) |
Fait passer l’élément entre deux états. Utilisez cette méthode pour passer des états définis par une application, plutôt que définis par un contrôle. |
GoToState(FrameworkElement, String, Boolean) |
Effectue la transition du contrôle entre deux états. Utilisez cette méthode pour passer des états sur le contrôle qui a un ControlTemplate. |
GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) |
Effectue la transition d’un contrôle entre les états. |
InvalidateProperty(DependencyProperty) |
Évalue à nouveau la valeur effective de la propriété de dépendance spécifiée. (Hérité de DependencyObject) |
MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Appelée chaque fois que la valeur effective d’une propriété de dépendance sur cette DependencyObject a été mise à jour. La propriété de dépendance spécifique qui a changé est signalée dans les données d’événement. (Hérité de DependencyObject) |
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Déclenche l’événement CurrentStateChanging sur l’objet VisualStateGroup spécifié. |
RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Déclenche l’événement CurrentStateChanging sur l’objet VisualStateGroup spécifié. |
ReadLocalValue(DependencyProperty) |
Retourne la valeur locale d’une propriété de dépendance, le cas échéant. (Hérité de DependencyObject) |
SetCurrentValue(DependencyProperty, Object) |
Définit la valeur d’une propriété de dépendance sans modifier sa source de valeur. (Hérité de DependencyObject) |
SetCustomVisualStateManager(FrameworkElement, VisualStateManager) |
Définit la propriété jointe CustomVisualStateManager. |
SetValue(DependencyProperty, Object) |
Définit la valeur locale d’une propriété de dépendance, spécifiée par son identificateur de propriété de dépendance. (Hérité de DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Définit la valeur locale d’une propriété de dépendance en lecture seule, spécifiée par l’identificateur DependencyPropertyKey de la propriété de dépendance. (Hérité de DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Retourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété de dépendance fournie. (Hérité de DependencyObject) |
ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
VerifyAccess() |
Applique que le thread appelant a accès à ce DispatcherObject. (Hérité de DispatcherObject) |