VisualStateManager Klasse

Definition

Verwaltet Zustände und die Logik für Übergänge zwischen Zuständen für Steuerelemente.Manages states and the logic for transitioning between states for controls.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Vererbung

Beispiele

Im folgenden Beispiel wird ein Rectangle erstellt und der VisualStateGroup angefügten- VisualStateManager.VisualStatesGroups Eigenschaft CommonStates ein mit der Bezeichnung hinzugefügt.The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. Im Beispiel werden das MouseOver - Normal Objekt und das CommonStates- VisualState Objekt in der VisualStateGroupdefiniert.The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. Wenn der Benutzer den Mauszeiger über den Rectanglebewegt, wird er über eine halbe Sekunde von rot in Grün geändert.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. Wenn der Benutzer den Mauszeiger aus dem Rechteck bewegt, ändert Grid sich sofort wieder in rot.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Beachten Sie, Normal dass der-Zustand keine Storyboarddefiniert.Note that the Normal state does not define a Storyboard. Eine Storyboard ist nicht erforderlich, Normal Rectangle Color SolidColorBrush da die fürMouseOverden Übergang MouseOvervom -Zustandinden-Zustandbeendetwirdunddie-Eigenschaftfürdenzurückgibt.Storyboard in rot.A Storyboard is not required because when the Rectangle transitions from the MouseOver state to the Normal state, the Storyboard for MouseOver is stopped and the Color property for the SolidColorBrush returns to red.

<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>

Das folgende Beispiel zeigt den Ereignishandler, der im vorherigen Beispiel definiert wurde, und ruft GoToElementState die-Methode auf, um zwischen Zuständen zu wechseln.The following example shows the event handler that is defined in the previous example and calls the GoToElementState method to transition between states. Wenn das Rechteck im vorherigen Beispiel Teil ControlTemplateeines ist, müsste das Beispiel die GoToState -Methode aufzurufen.If the rectangle in the previous example was part of a ControlTemplate, the example would have to call the GoToState method.

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

Hinweise

VisualStateManager Ermöglicht es Ihnen, Zustände für ein Steuerelement anzugeben, das Aussehen eines Steuer Elements, wenn es sich in einem bestimmten Zustand befindet, und wenn sich ein-Steuerelement ändert.The VisualStateManager enables you to specify states for a control, the appearance of a control when it is in a certain state, and when a control changes states. Beispielsweise kann eine Button etwas anderes Aussehen, wenn Sie gedrückt wird, als wenn Sie nicht gedrückt wird.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Zwei Zustände, denen Button das definiert, wenn es gedrückt wird ("Pressed"), und wenn es nicht ist"Normal"().Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal"). Die Darstellung eines-Steuer Elements, wenn es sich in einem-Zustand befindet VisualState, wird von einem definiert.The appearance of a control when it is in a state is defined by a VisualState. Eine VisualState enthält eine Auflistung von Storyboard -Objekten, die angeben, wie sich die Darstellung des Steuer Elements ändert, wenn sich das Steuerelement in diesem Zustand befindet.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. Sie fügen einem Steuerelement visuelle Zustände hinzu, indem VisualStateManager.VisualStateGroups Sie die angefügte-Eigenschaft für das Steuerelement festlegen.You add visual states to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. Jede VisualStateGroup enthält eine Auflistung von VisualState -Objekten, die sich gegenseitig ausschließen.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. Das heißt, das Steuerelement befindet sich immer in genau einem Zustand von VisualStateGroupin jedem.That is, the control is always in exactly one state of in each VisualStateGroup.

Mit können Sie auch angeben, wann ein Steuerelement in einen bestimmten Zustand wechselt. VisualStateManagerThe VisualStateManager also enables you to specify when a control enters a specific state. Die Methode, die Sie zum Ändern von Zuständen aufruft, hängt von Ihrem Szenario ab.The method that you should call to change states depends on your scenario. Wenn Sie ein Steuerelement erstellen, das VisualStateManager in seinem ControlTemplateverwendet, rufen GoToState Sie die-Methode auf.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. Weitere Informationen zum Erstellen von Steuerelementen, die verwenden VisualStateManager, finden Sie unter Erstellen eines Steuer Elements, das über eine anpassbare Darstellung verfügt.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. Wenn VisualStateManager Sie den außerhalb VisualStateManager ControlTemplate eines-Elements verwenden (z. b., wenn UserControl Sie in einem oder in einem einzelnen-Element verwenden) GoToElementState , müssen Sie die-Methode aufzurufen.If you use the VisualStateManager outside of a ControlTemplate (for example, if you use a VisualStateManager in a UserControl or in a single element), call the GoToElementState method. In beiden Fällen führt die VisualStateManager Logik aus, die erforderlich ist, um die Storyboards, die dem Beteiligten Zustand zugeordnet sind, ordnungsgemäß zu starten und zu unterbinden.In either case, the VisualStateManager performs the logic that is required to appropriately start and stop the storyboards that are associated with the involved state. Angenommen, ein State1 -Steuerelement definiert die Zustände und State2, denen jeweils ein Storyboard zugeordnet ist.For example, suppose that a control defines the states, State1 and State2, each of which has a storyboard associated with it. Wenn sich das Steuerelement State1 in befindet und State2 Sie GoToState an GoToElementStateoder übergeben VisualStateManager , startet das Storyboard State2 in und beendet das Storyboard State1in.If the control is in State1 and you pass State2 to GoToState or GoToElementState, the VisualStateManager starts the storyboard in State2 and stops the storyboard in State1.

In enthaltene Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) Steuerelemente verwenden das VisualStateManager , um visuelle Zustände zu ändern.Controls that are included with Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) use the VisualStateManager to change visual states. Wenn Sie ein ControlTemplate -Steuerelement für ein Steuerelement erstellen WPFWPF, das in enthalten ist, können Sie- ControlTemplate Objekte dem des-Steuer Elements hinzufügen VisualState , um die Darstellung des Steuer Elements in einem bestimmten Zustand anzugeben.When you create a ControlTemplate for a control that is included with WPFWPF, you can add VisualState objects to the control's ControlTemplate to specify the control's appearance in a certain state. Informationen zu den Namen der visuellen Zustände für die Steuerelemente, die in WPFWPFenthalten sind, finden Sie unter Steuerelement Stile und-Vorlagen.To find the names of the visual states for the controls that are included with WPFWPF, see Control Styles and Templates. Die Logik des Steuer Elements behandelt den Übergang zwischen Zuständen, sodass Sie keine anderen Aktionen ausführen müssen, als die VisualState Objekte in der neuen ControlTemplatezu definieren.The control's logic handles transitioning between states, so you do not need to do anything other than define the VisualState objects in the new ControlTemplate. Weitere Informationen zum Erstellen von Steuerelement Vorlagen für vorhandene Steuerelemente finden Sie unter Anpassen der Darstellung eines vorhandenen Steuer Elements durch Erstellen einer ControlTemplate.For more information about how to create control templates for existing controls, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate.

Wenn Sie Ihre eigene Logik für den Übergang zwischen Zuständen implementieren möchten, müssen Sie von VisualStateManagererben, die GoToStateCore -Methode überschreiben und die VisualStateManager.CustomVisualStateManager angefügte-Eigenschaft für das Steuerelement festlegen, das die benutzerdefinierte Logik verwendet.If you want to implement your own logic for transitioning between states, you must inherit from VisualStateManager, override the GoToStateCore method, and set the VisualStateManager.CustomVisualStateManager attached property on the control that uses the custom logic.

Konstruktoren

VisualStateManager()

Initialisiert eine neue Instanz der VisualStateManager-Klasse.Initializes a new instance of the VisualStateManager class.

Felder

CustomVisualStateManagerProperty

Bezeichnet die CustomVisualStateManager-Abhängigkeitseigenschaft.Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty

Bezeichnet die VisualStateGroups-Abhängigkeitseigenschaft.Identifies the VisualStateGroups dependency property.

Eigenschaften

DependencyObjectType

Ruft den DependencyObjectType ab, der den CLRCLR-Typ dieser Instanz umschließt.Gets the DependencyObjectType that wraps the CLRCLR type of this instance.

(Geerbt von DependencyObject)
Dispatcher

Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist.Gets the Dispatcher this DispatcherObject is associated with.

(Geerbt von DispatcherObject)
IsSealed

Ruft einen Wert ab, der angibt, ob diese Instanz derzeit versiegelt (schreibgeschützt) ist.Gets a value that indicates whether this instance is currently sealed (read-only).

(Geerbt von DependencyObject)

Angefügte Eigenschaften

CustomVisualStateManager

Ruft das VisualStateManager-Objekt ab, das zwischen den Zuständen eines Steuerelements wechselt, oder legt dieses fest.Gets or sets the VisualStateManager object that transitions between the states of a control.

VisualStateGroups

Ruft eine Auflistung von VisualStateGroup-Objekten ab oder legt diese fest.Gets or sets a collection of VisualStateGroup objects.

Methoden

CheckAccess()

Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann.Determines whether the calling thread has access to this DispatcherObject.

(Geerbt von DispatcherObject)
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Eigenschaft.Clears the local value of a property. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyProperty-Bezeichner angegeben.The property to be cleared is specified by a DependencyProperty identifier.

(Geerbt von DependencyObject)
ClearValue(DependencyPropertyKey)

Löscht den lokalen Wert einer schreibgeschützten Eigenschaft.Clears the local value of a read-only property. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyPropertyKey angegeben.The property to be cleared is specified by a DependencyPropertyKey.

(Geerbt von DependencyObject)
CoerceValue(DependencyProperty)

Erzwingt den Wert der angegebenen Abhängigkeitseigenschaft.Coerces the value of the specified dependency property. Dies erfolgt durch den Aufruf einer beliebigen CoerceValueCallback-Funktion, die in den Metadaten für die Abhängigkeitseigenschaft angegeben ist, während sie beim aufrufenden DependencyObject beendet wird.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Geerbt von DependencyObject)
Equals(Object)

Bestimmt, ob ein angegebenes DependencyObject dem aktuellen DependencyObject entspricht.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Geerbt von DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ruft die angefügte CustomVisualStateManager-Eigenschaft ab.Gets the CustomVisualStateManager attached property.

GetHashCode()

Ruft einen Hashcode für diese DependencyObject ab.Gets a hash code for this DependencyObject.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen spezialisierten Enumerator, mit dem bestimmt wird, welche Abhängigkeitseigenschaften dieses DependencyObject über lokal festgelegte Werte verfügen.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Geerbt von DependencyObject)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz eines DependencyObject zurück.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Geerbt von DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ruft die angefügte VisualStateGroups-Eigenschaft ab.Gets the VisualStateGroups attached property.

GoToElementState(FrameworkElement, String, Boolean)

Wechselt zwischen zwei Zuständen des Elements.Transitions the element between two states. Verwenden Sie diese Methode zum Wechseln von Zuständen, die von einer Anwendung und nicht von einem Steuerelement definiert werden.Use this method to transition states that are defined by an application, rather than defined by a control.

GoToState(FrameworkElement, String, Boolean)

Führt Übergang des Steuerelements von einem Zustand in einen anderen durch.Transitions the control between two states. Verwenden Sie diese Methode für Übergänge zwischen Zuständen in Steuerelementen mit ControlTemplate.Use this method to transition states on control that has a ControlTemplate.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

Wechselt zwischen den Zuständen eines Steuerelements.Transitions a control between states.

InvalidateProperty(DependencyProperty)

Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus.Re-evaluates the effective value for the specified dependency property.

(Geerbt von DependencyObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Wird immer dann aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für dieses DependencyObject aktualisiert wurde.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. Welche spezifische Abhängigkeitseigenschaft geändert wird, wird in den Ereignisdaten gemeldet.The specific dependency property that changed is reported in the event data.

(Geerbt von DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Löst das CurrentStateChanging-Ereignis für das angegebene VisualStateGroup-Objekt aus.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Löst das CurrentStateChanging-Ereignis für das angegebene VisualStateGroup-Objekt aus.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

ReadLocalValue(DependencyProperty)

Gibt, sofern vorhanden, den lokalen Wert einer Abhängigkeitseigenschaft zurück.Returns the local value of a dependency property, if it exists.

(Geerbt von DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Legt den Wert einer Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern.Sets the value of a dependency property without changing its value source.

(Geerbt von DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Legt die angefügte CustomVisualStateManager-Eigenschaft fest.Sets the CustomVisualStateManager attached property.

SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die über ihren Bezeichner angegeben wird.Sets the local value of a dependency property, specified by its dependency property identifier.

(Geerbt von DependencyObject)
SetValue(DependencyPropertyKey, Object)

Legt den lokalen Wert einer schreibgeschützten Abhängigkeitseigenschaft fest, die durch den DependencyPropertyKey-Bezeichner der Abhängigkeitseigenschaft angegeben ist.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Geerbt von DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert der bereitgestellten Abhängigkeitseigenschaft serialisieren sollen.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Geerbt von DependencyObject)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
VerifyAccess()

Erzwingt, dass der aufrufende Thread auf dieses DispatcherObject zugreifen kann.Enforces that the calling thread has access to this DispatcherObject.

(Geerbt von DispatcherObject)

Gilt für: