Freigeben über


VisualStateManager Klasse

Definition

Verwaltet Zustände und die Logik für den Übergang zwischen Zuständen für Steuerelemente.

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 eine Rectangle benannte CommonStatesVisualStateManager.VisualStatesGroups Eigenschaft erstellt und hinzugefügtVisualStateGroup. Das Beispiel definiert die und Normaldie Objekte in der CommonStatesVisualStateGroup.MouseOverVisualState Wenn der Benutzer den Mauszeiger über den RectangleMauszeiger bewegt, wechselt er von Rot in Grün über eine halbe Sekunde. Wenn der Benutzer die Maus vom Rechteck weg bewegt, ändert sich der Grid Wechsel sofort wieder in Rot. Beachten Sie, dass der Normal Zustand keine .Storyboard A Storyboard ist nicht erforderlich, MouseOverStoryboard da der Rectangle Übergang vom MouseOver Zustand zum Normal Zustand beendet wird und die Color Eigenschaft für die SolidColorBrush Rückgabe in Rot zurückgegeben wird.

<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 ist, und ruft die GoToElementState Methode zum Übergang zwischen Zuständen auf. Wenn das Rechteck im vorherigen Beispiel Teil eines ControlTemplateBeispiels war, müsste das Beispiel die GoToState Methode aufrufen.

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

Auf diese VisualStateManager Weise können Sie Zustände für ein Steuerelement, das Erscheinungsbild eines Steuerelements angeben, wenn es sich in einem bestimmten Zustand befindet, und wenn ein Steuerelement den Status ändert. Beispielsweise kann ein Element Button etwas anders aussehen, wenn es gedrückt wird, als wenn es nicht gedrückt wird. Zwei Zustände, die definierten Button entsprechen, wenn sie gedrückt ("Pressed") und wenn sie nicht ("Normal") ist. Das Erscheinungsbild eines Steuerelements, wenn es sich in einem Zustand befindet, wird durch ein VisualState. A VisualState enthält eine Auflistung von Storyboard Objekten, die angeben, wie sich die Darstellung des Steuerelements ändert, wenn sich das Steuerelement in diesem Zustand befindet. Sie fügen einem Steuerelement visuelle Zustände hinzu, indem Sie die VisualStateManager.VisualStateGroups angefügte Eigenschaft für das Steuerelement festlegen. Jede VisualStateGroup enthält eine Auflistung von VisualState Objekten, die sich gegenseitig ausschließen. Das heißt, das Steuerelement befindet sich immer in genau einem Zustand jedes VisualStateGroup.

Außerdem VisualStateManager können Sie angeben, wann ein Steuerelement in einen bestimmten Zustand wechselt. Die Methode, die Sie zum Ändern von Status aufrufen sollten, hängt von Ihrem Szenario ab. Wenn Sie ein Steuerelement erstellen, das das VisualStateManager Steuerelement verwendet ControlTemplate, rufen Sie die GoToState Methode auf. Weitere Informationen zum Erstellen von Steuerelementen, die das VisualStateManagerSteuerelement verwenden, finden Sie unter Erstellen eines Steuerelements mit anpassbarer Darstellung. Wenn Sie die VisualStateManager Außenseite eines ControlTemplate Elements verwenden (z. B. wenn Sie ein VisualStateManager Element in einem UserControl oder in einem einzelnen Element verwenden), rufen Sie die GoToElementState Methode auf. In beiden Fällen führt die VisualStateManager Logik aus, die erforderlich ist, um die Storyboards, die dem beteiligten Zustand zugeordnet sind, entsprechend zu starten und zu beenden. Angenommen, ein Steuerelement definiert die Zustände State1 und State2, von denen jedes ein Storyboard zugeordnet ist. Wenn sich das Steuerelement befindet State1 und Sie an das Storyboard übergeben State2GoToState oder GoToElementState, startet das VisualStateManager Storyboard in State2 und stoppt das Storyboard in State1.

Steuerelemente, die in Windows Presentation Foundation (WPF) enthalten sind, verwenden zum VisualStateManager Ändern visueller Zustände. Wenn Sie ein ControlTemplate Steuerelement erstellen, das in WPF enthalten ist, können Sie dem Steuerelement ControlTemplate Objekte hinzufügenVisualState, um die Darstellung des Steuerelements in einem bestimmten Zustand anzugeben. Informationen zu den Namen der visuellen Zustände für die Steuerelemente, die in WPF enthalten sind, finden Sie unter Steuerelementformatvorlagen und -vorlagen. Die Logik des Steuerelements behandelt den Übergang zwischen Zuständen, sodass Sie nichts anderes tun müssen, als die VisualState Objekte im neuen ControlTemplatezu definieren. Weitere Informationen zum Erstellen von Steuerelementvorlagen für vorhandene Steuerelemente finden Sie unter Erstellen einer Vorlage für ein Steuerelement.

Wenn Sie ihre eigene Logik für den Übergang zwischen Zuständen implementieren möchten, müssen Sie von VisualStateManagerder GoToStateCore Methode erben, die Methode überschreiben und die VisualStateManager.CustomVisualStateManager angefügte Eigenschaft für das Steuerelement festlegen, das die benutzerdefinierte Logik verwendet.

Konstruktoren

Name Beschreibung
VisualStateManager()

Initialisiert eine neue Instanz der VisualStateManager-Klasse.

Felder

Name Beschreibung
CustomVisualStateManagerProperty

Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty

Identifies the VisualStateGroups dependency property.

Eigenschaften

Name Beschreibung
DependencyObjectType

Ruft den DependencyObjectType CLR-Typ dieser Instanz ab.

(Geerbt von DependencyObject)
Dispatcher

Ruft dies Dispatcher ab, dem dies DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
IsSealed

Ruft einen Wert ab, der angibt, ob diese Instanz aktuell versiegelt ist (schreibgeschützt).

(Geerbt von DependencyObject)

Angefügte Eigenschaften

Name Beschreibung
CustomVisualStateManager

Dient zum Abrufen oder Festlegen des VisualStateManager Objekts, das zwischen den Zuständen eines Steuerelements wechselt.

VisualStateGroups

Dient zum Abrufen oder Festlegen einer Auflistung von VisualStateGroup Objekten.

Methoden

Name Beschreibung
CheckAccess()

Bestimmt, ob der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Eigenschaft. Die zu löschende Eigenschaft wird durch einen DependencyProperty Bezeichner angegeben.

(Geerbt von DependencyObject)
ClearValue(DependencyPropertyKey)

Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die zu löschende Eigenschaft wird durch eine DependencyPropertyKey.

(Geerbt von DependencyObject)
CoerceValue(DependencyProperty)

Wandelt den Wert der angegebenen Abhängigkeitseigenschaft um. Dies wird erreicht, indem alle CoerceValueCallback in Eigenschaftsmetadaten für die Abhängigkeitseigenschaft angegebenen Funktionen aufgerufen werden, wie sie für den Aufruf DependencyObjectvorhanden sind.

(Geerbt von DependencyObject)
Equals(Object)

Bestimmt, ob ein bereitgestelltes DependencyObject Element dem aktuellen DependencyObjectentspricht.

(Geerbt von DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ruft die CustomVisualStateManager angefügte Eigenschaft ab.

GetHashCode()

Ruft einen Hashcode für diese DependencyObjectab.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen speziellen Enumerator, um zu bestimmen, welche Abhängigkeitseigenschaften lokal festgelegte Werte für diese DependencyObjectEigenschaft haben.

(Geerbt von DependencyObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft für diese Instanz einer .DependencyObject

(Geerbt von DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ruft die VisualStateGroups angefügte Eigenschaft ab.

GoToElementState(FrameworkElement, String, Boolean)

Übergibt das Element zwischen zwei Zuständen. Verwenden Sie diese Methode, um Zustände zu übergehen, die von einer Anwendung definiert werden, anstatt durch ein Steuerelement definiert.

GoToState(FrameworkElement, String, Boolean)

Übergibt das Steuerelement zwischen zwei Zuständen. Verwenden Sie diese Methode, um Zustände für Steuerelement mit einem ControlTemplate.

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

Übergibt ein Steuerelement zwischen Zuständen.

InvalidateProperty(DependencyProperty)

Wertet den effektiven Wert für die angegebene Abhängigkeitseigenschaft erneut aus.

(Geerbt von DependencyObject)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Wird immer aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für diese DependencyObject Eigenschaft aktualisiert wurde. Die spezifische Abhängigkeitseigenschaft, die geändert wurde, wird in den Ereignisdaten gemeldet.

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

Löst das CurrentStateChanging Ereignis für das angegebene VisualStateGroup Objekt aus.

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

Löst das CurrentStateChanging Ereignis für das angegebene VisualStateGroup Objekt aus.

ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, sofern vorhanden.

(Geerbt von DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Legt den Wert einer Abhängigkeitseigenschaft fest, ohne die Wertquelle zu ändern.

(Geerbt von DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Legt die CustomVisualStateManager angefügte Eigenschaft fest.

SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch den Bezeichner der Abhängigkeitseigenschaft angegeben wird.

(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 wird.

(Geerbt von DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert für die bereitgestellte Abhängigkeitseigenschaft serialisieren sollen.

(Geerbt von DependencyObject)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
VerifyAccess()

Erzwingt, dass der aufrufende Thread Zugriff auf diesen DispatcherObjectThread hat.

(Geerbt von DispatcherObject)

Gilt für: