VisualStateManager VisualStateManager VisualStateManager VisualStateManager Class

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

Das folgende Beispiel erstellt eine Rectangle und fügt eine VisualStateGroup mit dem Namen CommonStates auf die VisualStateManager.VisualStatesGroups angefügte Eigenschaft.The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. Das Beispiel definiert die MouseOver und Normal VisualState Objekte in der CommonStates VisualStateGroup.The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. Wenn der Benutzer den Mauszeiger verschiebt, über die Rectangle, es ändert von Rot zu Grün über eine halbe Sekunde.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. Wenn der Benutzer die Maus von Rechtecks richtet die Grid sofort zu rot zurück.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Beachten Sie, dass die Normal Zustand werden keine definiert eine Storyboard.Note that the Normal state does not define a Storyboard. Ein Storyboard ist nicht erforderlich, da bei der Rectangle wechselt von der MouseOver Zustand der Normal Zustand der Storyboard für MouseOver wird beendet und die Color -Eigenschaft für die SolidColorBrush gibt auf 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 und ruft definiert, ist die GoToElementState Methode zum Wechseln zwischen Zuständen.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 war eine ControlTemplate, im Beispiel müssten Aufrufen der GoToState Methode.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

Die VisualStateManager ermöglicht es Ihnen, die Zustände für ein Steuerelement, das die Darstellung eines Steuerelements angeben, wenn es in einem bestimmten Zustand befindet, und wenn ein Steuerelement den Status ä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. Z. B. eine Button möglicherweise ein geringfügig anderes Aussehen, wenn es als gedrückt wird, wenn es nicht gedrückt wird.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Mit zwei Zuständen, die die Button definiert entsprechen, wenn es gedrückt wird ("Pressed") und wann ist nicht ("Normal").Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal"). Die Darstellung eines Steuerelements, wenn es in einem Zustand befindet, wird durch definiert eine VisualState.The appearance of a control when it is in a state is defined by a VisualState. Ein VisualState enthält eine Auflistung von Storyboard Objekte, die angeben, wie die Darstellung des Steuerelements ändert, wenn das Steuerelement in diesem Zustand ist.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. Hinzufügen von visuellen Zuständen zu einem Steuerelement durch Festlegen der VisualStateManager.VisualStateGroups angefügte Eigenschaft für das Steuerelement.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 Objekte, die sich gegenseitig ausschließende sind.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. D. h. das Steuerelement ist stets in genau einem Zustand, der in den einzelnen VisualStateGroup.That is, the control is always in exactly one state of in each VisualStateGroup.

Die VisualStateManager können Sie angeben, wenn ein Steuerelement einen bestimmten Zustand wechselt.The VisualStateManager also enables you to specify when a control enters a specific state. Die Methode, die Sie zum Ändern von Zuständen aufrufen sollte, hängt von Ihrem Szenario ab.The method that you should call to change states depends on your scenario. Wenn Sie ein Steuerelement erstellen, verwendet der VisualStateManager in seine ControlTemplate, rufen Sie die GoToState Methode.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. Weitere Informationen über das Erstellen mit Steuerelementen die VisualStateManager, finden Sie unter erstellen ein Steuerelement verfügt, einer anpassbaren Darstellung.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. Bei Verwendung der VisualStateManager außerhalb von eine ControlTemplate (z. B. bei Verwendung einer VisualStateManager in eine UserControl oder in ein einzelnes Element), Aufrufen der GoToElementState Methode.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 die VisualStateManager führt die Logik, die erforderlich sind, entsprechend starten und beenden die Storyboards, die dem betreffenden Zustand zugeordnet sind.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. Nehmen wir beispielsweise an, dass ein Steuerelement die Bundesstaaten definiert State1 und State2, von denen jeder 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 das Steuerelement im State1 und übergeben Sie State2 zu GoToState oder GoToElementState, VisualStateManager startet das Storyboard in State2 und hält das Storyboard in State1.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.

Steuerelemente, die in enthaltenen Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) verwenden die VisualStateManager 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. Bei der Erstellung einer ControlTemplate für ein Steuerelement, das enthalten ist WPFWPF, hinzufügbaren VisualState Objekte des Steuerelements ControlTemplate Darstellung des Steuerelements in einem bestimmten Zustand angeben.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. Um die Namen des visuellen Zustände für die Steuerelemente zu suchen, die in enthaltenen WPFWPF, finden Sie unter Steuerelementformate und-Vorlagen.To find the names of the visual states for the controls that are included with WPFWPF, see Control Styles and Templates. Definieren des Steuerelements Logik behandelt den Übergang zwischen Zuständen, damit Sie nicht benötigen, um nichts außer der VisualState Objekte in der neuen ControlTemplate.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 Steuerelementvorlagen für vorhandene Steuerelemente finden Sie unter Anpassen der Darstellung eines vorhandenen Steuerelements 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 Übergänge zwischen Zuständen implementieren möchten, müssen Sie erben von VisualStateManager, überschreiben die GoToStateCore -Methode, und legen die VisualStateManager.CustomVisualStateManager angefügte Eigenschaft für das Steuerelement, 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() VisualStateManager() VisualStateManager() VisualStateManager()

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

Felder

CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty CustomVisualStateManagerProperty

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

VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty VisualStateGroupsProperty

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

Angefügte Eigenschaften

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

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

Methoden

CheckAccess() CheckAccess() CheckAccess() CheckAccess()

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

(Inherited from DispatcherObject)
ClearValue(DependencyProperty) ClearValue(DependencyProperty) ClearValue(DependencyProperty) 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.

(Inherited from DependencyObject)
ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) ClearValue(DependencyPropertyKey) 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.

(Inherited from DependencyObject)
CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) CoerceValue(DependencyProperty) 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.

(Inherited from DependencyObject)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

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

(Inherited from DependencyObject)
GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement) GetCustomVisualStateManager(FrameworkElement)

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

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from DependencyObject)
GetLocalValueEnumerator() GetLocalValueEnumerator() GetLocalValueEnumerator() 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.

(Inherited from DependencyObject)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
GetValue(DependencyProperty) GetValue(DependencyProperty) GetValue(DependencyProperty) 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.

(Inherited from DependencyObject)
GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement) GetVisualStateGroups(FrameworkElement)

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

GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) GoToElementState(FrameworkElement, String, Boolean) 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) GoToState(FrameworkElement, String, Boolean) GoToState(FrameworkElement, String, Boolean) 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) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

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

InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty) InvalidateProperty(DependencyProperty)

Berechnet den effektiven Wert für die angegebene Abhängigkeitseigenschaft neuRe-evaluates the effective value for the specified dependency property

(Inherited from DependencyObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

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

(Inherited from Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) OnPropertyChanged(DependencyPropertyChangedEventArgs) 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. Die spezifische Abhängigkeitseigenschaft, die sich geändert hat, wird in den Ereignisdaten angegeben.The specific dependency property that changed is reported in the event data.

(Inherited from DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) 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) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) 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) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty) ReadLocalValue(DependencyProperty)

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

(Inherited from DependencyObject)
SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) SetCurrentValue(DependencyProperty, Object) 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.

(Inherited from DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager) SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

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

SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) SetValue(DependencyProperty, Object) 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.

(Inherited from DependencyObject)
SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) SetValue(DependencyPropertyKey, Object) 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.

(Inherited from DependencyObject)
ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) ShouldSerializeProperty(DependencyProperty) 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.

(Inherited from DependencyObject)
ToString() ToString() ToString() ToString()

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

(Inherited from Object)
VerifyAccess() VerifyAccess() VerifyAccess() VerifyAccess()

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

(Inherited from DispatcherObject)

Eigenschaften

DependencyObjectType DependencyObjectType DependencyObjectType DependencyObjectType

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

(Inherited from DependencyObject)
Dispatcher Dispatcher Dispatcher Dispatcher

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

(Inherited from DispatcherObject)
IsSealed IsSealed IsSealed 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).

(Inherited from DependencyObject)

Gilt für: