Teilen ü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 ein Rectangle erstellt und der angefügten VisualStateManager.VisualStatesGroups Eigenschaft eine VisualStateGroup namens CommonStates hinzugefügt. Im Beispiel werden die objekte MouseOver und NormalVisualState im CommonStatesVisualStateGroupdefiniert. Wenn der Benutzer den Mauszeiger über die Rectanglebewegt, wechselt er von Rot in Grün über eine halbe Sekunde. Wenn der Benutzer die Maus vom Rechteck weg bewegt, ändert sich die Grid sofort wieder in Rot. Beachten Sie, dass der Normal Zustand keine Storyboarddefiniert. Ein Storyboard ist nicht erforderlich, da beim Übergang des Rectangle vom MouseOver Zustand zum Normal Zustand die Storyboard für MouseOver beendet wird und die Color-Eigenschaft für die SolidColorBrush auf Rot 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 ruft die GoToElementState-Methode auf, um zwischen 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 dem VisualStateManager können Sie Zustände für ein Steuerelement, das Erscheinungsbild eines Steuerelements angeben, wenn es sich in einem bestimmten Zustand befindet, und wenn sich ein Steuerelement ändert. Beispielsweise kann ein Button ein etwas anderes Aussehen aufweisen, wenn es gedrückt wird als wenn er nicht gedrückt wird. Zwei Zustände, dass die Button definiert, wenn sie gedrückt wird ("Pressed") und wenn dies nicht ist ("Normal"). Das Erscheinungsbild eines Steuerelements, wenn es sich in einem Zustand befindet, wird durch eine VisualStatedefiniert. Ein 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 angefügte eigenschaft VisualStateManager.VisualStateGroups 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.

Mit dem VisualStateManager können Sie auch 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 die VisualStateManager in seinem 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ßerhalb eines ControlTemplate verwenden (z. B. wenn Sie eine VisualStateManager in einem UserControl oder in einem einzelnen Element verwenden), rufen Sie die GoToElementState-Methode auf. In beiden Fällen führt die VisualStateManager die 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 in State1 befindet und Sie State2 an GoToState oder GoToElementStateübergeben, startet die VisualStateManager das Storyboard in State2 und stoppt das Storyboard in State1.

Steuerelemente, die in Windows Presentation Foundation (WPF) enthalten sind, verwenden die VisualStateManager, um visuelle Zustände zu ändern. Wenn Sie eine ControlTemplate für ein Steuerelement erstellen, das in WPF enthalten ist, können Sie VisualState Objekte zum ControlTemplate des Steuerelements hinzufügen, um die Darstellung des Steuerelements in einem bestimmten Zustand anzugeben. Informationen zum Suchen der 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 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 VisualStateManagererben, die GoToStateCore-Methode außer Kraft setzen 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

Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty

Identifies the VisualStateGroups dependency property.

Eigenschaften

DependencyObjectType

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

(Geerbt von DependencyObject)
Dispatcher

Ruft die Dispatcher dieser 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

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

CheckAccess()

Bestimmt, ob der aufrufende Thread Zugriff auf diese DispatcherObjecthat.

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

(Geerbt von DependencyObject)
CoerceValue(DependencyProperty)

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

(Geerbt von DependencyObject)
Equals(Object)

Bestimmt, ob eine angegebene DependencyObject dem aktuellen DependencyObjectentspricht.

(Geerbt von DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ruft die angefügte eigenschaft CustomVisualStateManager ab.

GetHashCode()

Ruft einen Hashcode für diese DependencyObjectab.

(Geerbt von DependencyObject)
GetLocalValueEnumerator()

Erstellt einen speziellen Enumerator zum Bestimmen, welche Abhängigkeitseigenschaften lokal für dieses DependencyObjectfestgelegt sind.

(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 eines DependencyObjectzurück.

(Geerbt von DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ruft die angefügte eigenschaft VisualStateGroups 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 das Steuerelement mit einem ControlTemplatezu übertragen.

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 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 angefügte eigenschaft CustomVisualStateManager 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 diese DispatcherObjecthat.

(Geerbt von DispatcherObject)

Gilt für: