VisualStateManager Klasse

Definition

Verwaltet Zustände und die Logik für Übergänge 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 ein Rectangle erstellt und der angefügten VisualStateManager.VisualStatesGroups Eigenschaft ein VisualStateGroup benannter CommonStates hinzugefügt. Im Beispiel werden die - und Normal-Objekte in definiertCommonStatesVisualStateGroup.MouseOverVisualState Wenn der Benutzer den Mauszeiger über den Rectanglebewegt, wechselt er über eine halbe Sekunde von rot in grün. Wenn der Benutzer die Maus vom Rechteck weg bewegt, ändert sich das Grid sofort wieder in rot. Beachten Sie, dass der Normal Zustand keine definiert Storyboard. Ein Storyboard ist nicht erforderlich, da beim Rectangle Übergang vom Zustand in den MouseOverNormal Zustand das Storyboard für MouseOver beendet wird und die Color Eigenschaft für rot SolidColorBrush zurückgibt.

<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 die GoToElementState -Methode aufruft, um zwischen den Zuständen zu wechseln. Wenn das Rechteck im vorherigen Beispiel Teil eines ControlTemplatewar, 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

Mit VisualStateManager können Sie Zustände für ein Steuerelement angeben, die Darstellung eines Steuerelements, wenn es sich in einem bestimmten Zustand befindet und wann ein Steuerelement den Zustand ändert. Beispielsweise kann ein Button etwas anderes Aussehen haben, wenn es gedrückt wird, als wenn es nicht gedrückt wird. Zwei Zustände, die definiert Button werden, wenn es gedrückt wird ("Pressed") und wenn es nicht ("Normal") ist. Die Darstellung eines Steuerelements, wenn es sich in einem Zustand befindet, wird durch definiert 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 von in jedem VisualStateGroup.

Mit VisualStateManager können Sie auch angeben, wann ein Steuerelement in einen bestimmten Zustand wechselt. Die Methode, die Sie aufrufen sollten, um Zustände zu ändern, hängt von Ihrem Szenario ab. Wenn Sie ein Steuerelement erstellen, das den VisualStateManager in ControlTemplateverwendet, rufen Sie die GoToState -Methode auf. Weitere Informationen zum Erstellen von Steuerelementen, die die VisualStateManagerverwenden, finden Sie unter Erstellen eines Steuerelements mit anpassbarer Darstellung. Wenn Sie die VisualStateManager Außenseite eines ControlTemplate verwenden (z. B. wenn Sie ein VisualStateManager in einem UserControl oder in einem einzelnen Element verwenden), rufen Sie die -Methode auf GoToElementState . In beiden Fällen führt die Logik aus, die VisualStateManager erforderlich ist, um die Storyboards, die dem betroffenen Zustand zugeordnet sind, entsprechend zu starten und zu beenden. Angenommen, ein Steuerelement definiert die Zustände State1 und State2, denen jeweils ein Storyboard zugeordnet ist. Wenn das Steuerelement in State1 ist und Sie an GoToState oder GoToElementStateübergebenState2, startet das VisualStateManager Storyboard in State2 und beendet das Storyboard inState1.

Steuerelemente, die in Windows Presentation Foundation (WPF) enthalten sind, verwenden den, um den VisualStateManager visuellen Status zu ändern. Wenn Sie ein für 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 zum Ermitteln der Namen der visuellen Zustände für die steuerelemente, die in WPF enthalten sind, finden Sie unter Steuerelementstile und Vorlagen. Die Logik des Steuerelements übernimmt 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 Anpassen der Darstellung eines vorhandenen Steuerelements durch Erstellen einer ControlTemplate.

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

Konstruktoren

VisualStateManager()

Initialisiert eine neue Instanz der VisualStateManager-Klasse.

Felder

CustomVisualStateManagerProperty

Bezeichnet die CustomVisualStateManager-Abhängigkeitseigenschaft.

VisualStateGroupsProperty

Bezeichnet die VisualStateGroups-Abhängigkeitseigenschaft.

Eigenschaften

DependencyObjectType

Ruft die ab, die DependencyObjectType den CLR-Typ dieser instance umschließt.

(Geerbt von DependencyObject)
Dispatcher

Ruft den Dispatcher ab, der diesem DispatcherObject zugeordnet ist.

(Geerbt von DispatcherObject)
IsSealed

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

(Geerbt von DependencyObject)

Angefügte Eigenschaften

CustomVisualStateManager

Ruft das VisualStateManager-Objekt ab, das zwischen den Zuständen eines Steuerelements wechselt, oder legt dieses fest.

VisualStateGroups

Ruft eine Auflistung von VisualStateGroup-Objekten ab oder legt diese fest.

Methoden

CheckAccess()

Bestimmt, ob der aufrufende Thread auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Eigenschaft. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyProperty-Bezeichner angegeben.

(Geerbt von DependencyObject)
ClearValue(DependencyPropertyKey)

Löscht den lokalen Wert einer schreibgeschützten Eigenschaft. Die Eigenschaft, deren Wert gelöscht werden soll, wird durch einen DependencyPropertyKey angegeben.

(Geerbt von DependencyObject)
CoerceValue(DependencyProperty)

Erzwingt den Wert der angegebenen Abhängigkeitseigenschaft. 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.

(Geerbt von DependencyObject)
Equals(Object)

Bestimmt, ob ein angegebenes DependencyObject dem aktuellen DependencyObject entspricht.

(Geerbt von DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ruft die angefügte CustomVisualStateManager-Eigenschaft ab.

GetHashCode()

Ruft einen Hashcode für diese DependencyObject ab.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen spezialisierten Enumerator, mit dem bestimmt wird, welche Abhängigkeitseigenschaften dieses DependencyObject über lokal festgelegte Werte verfügen.

(Geerbt von DependencyObject)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(DependencyProperty)

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

(Geerbt von DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ruft die angefügte VisualStateGroups-Eigenschaft ab.

GoToElementState(FrameworkElement, String, Boolean)

Wechselt zwischen zwei Zuständen des Elements. Verwenden Sie diese Methode zum Wechseln von Zuständen, die von einer Anwendung und nicht von einem Steuerelement definiert werden.

GoToState(FrameworkElement, String, Boolean)

Führt Übergang des Steuerelements von einem Zustand in einen anderen durch. Verwenden Sie diese Methode für Übergänge zwischen Zuständen in Steuerelementen mit ControlTemplate.

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

Wechselt zwischen den Zuständen eines Steuerelements.

InvalidateProperty(DependencyProperty)

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

(Geerbt von DependencyObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Wird immer dann aufgerufen, wenn der effektive Wert einer Abhängigkeitseigenschaft für dieses DependencyObject aktualisiert wurde. Welche spezifische Abhängigkeitseigenschaft geändert wird, 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, wenn dieser vorhanden ist.

(Geerbt von DependencyObject)
SetCurrentValue(DependencyProperty, Object)

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

(Geerbt von DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Legt die angefügte CustomVisualStateManager-Eigenschaft fest.

SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft fest, die durch ihren Bezeichner angegeben ist.

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

(Geerbt von DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Gibt einen Wert zurück, der angibt, ob Serialisierungsprozesse den Wert der bereitgestellten 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 auf dieses DispatcherObject zugreifen kann.

(Geerbt von DispatcherObject)

Gilt für: