VisualStateManager Klasa

Definicja

Zarządza stanami i logiką przechodzenia między stanami kontrolek.

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

Przykłady

Poniższy przykład tworzy obiekt Rectangle i dodaje VisualStateGroup element o nazwie CommonStates do dołączonej VisualStateManager.VisualStatesGroups właściwości. W przykładzie zdefiniowano MouseOver obiekty i NormalVisualState w obiekcie CommonStatesVisualStateGroup. Gdy użytkownik przesuwa wskaźnik myszy nad , zmienia się z czerwonego Rectanglena zielony w ciągu jednej połowy sekundy. Gdy użytkownik przenosi wskaźnik myszy z dala od prostokąta, Grid natychmiast zmienia się z powrotem na czerwony. Należy pamiętać, że Normal stan nie definiuje .Storyboard Element nie Storyboard jest wymagany, Storyboard ponieważ po Rectangle przejściu MouseOver ze stanu do Normal stanu właściwość for MouseOver jest zatrzymana, a Color właściwość dla elementu powróci do czerwonegoSolidColorBrush.

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

Poniższy przykład przedstawia procedurę obsługi zdarzeń zdefiniowaną w poprzednim przykładzie i wywołuje metodę GoToElementState w celu przejścia między stanami. Jeśli prostokąt w poprzednim przykładzie był częścią ControlTemplateelementu , przykład musiałby wywołać metodę GoToState .

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

Uwagi

Element VisualStateManager umożliwia określenie stanów dla kontrolki, wyglądu kontrolki w określonym stanie oraz zmiany stanu kontrolki. Na przykład element Button może mieć nieco inny wygląd, gdy jest naciśnięty niż wtedy, gdy nie jest naciśnięty. Dwa stany, które Button definiują, odpowiadają, gdy jest naciśnięty ("Pressed") i gdy nie jest ("Normal"). Wygląd kontrolki, gdy znajduje się w stanie, jest definiowany przez element VisualState. Obiekt VisualState zawiera kolekcję Storyboard obiektów, które określają, jak zmienia się wygląd kontrolki, gdy kontrolka jest w tym stanie. Stany wizualizacji można dodać do kontrolki, ustawiając dołączoną VisualStateManager.VisualStateGroups właściwość w kontrolce. Każda VisualStateGroup z nich zawiera kolekcję VisualState obiektów, które wzajemnie się wykluczają. Oznacza to, że kontrolka jest zawsze w jednym stanie w każdym VisualStateGroupobiekcie .

Element VisualStateManager umożliwia również określenie, kiedy kontrolka wchodzi w określony stan. Metoda, którą należy wywołać w celu zmiany stanów, zależy od scenariusza. Jeśli utworzysz kontrolkę używającą VisualStateManager elementu w metodzie ControlTemplate, wywołaj metodę GoToState . Aby uzyskać więcej informacji na temat tworzenia kontrolek korzystających z programu VisualStateManager, zobacz Tworzenie kontrolki, która ma dostosowywalny wygląd. Jeśli używasz VisualStateManager elementu zewnętrznego ControlTemplate (na przykład jeśli używasz VisualStateManager elementu w elem UserControl lub w jednym elemecie), wywołaj metodę GoToElementState . W obu przypadkach VisualStateManager program wykonuje logikę wymaganą do odpowiedniego uruchomienia i zatrzymania scenorysów skojarzonych ze stanem zaangażowanym. Załóżmy na przykład, że kontrolka definiuje stany i State1State2, z których każda ma skojarzona scenorys. Jeśli kontrolka jest w State1 kontrolce i przekazujesz State2 element lub GoToStateGoToElementState, VisualStateManager rozpoczyna scenorys w State2 programie i zatrzymuje scenorys w programie State1.

Kontrolki dołączone do Windows Presentation Foundation (WPF) używają elementu VisualStateManager do zmiany stanów wizualizacji. Podczas tworzenia ControlTemplate kontrolki dołączonej do WPF można dodawać VisualState obiekty do kontrolki ControlTemplate w celu określenia wyglądu kontrolki w określonym stanie. Aby znaleźć nazwy stanów wizualizacji dla kontrolek dołączonych do platformy WPF, zobacz Style i szablony kontrolek. Logika kontrolki obsługuje przechodzenie między stanami, więc nie trzeba wykonywać żadnych czynności innych niż definiowanie VisualState obiektów w nowym ControlTemplateobiekcie . Aby uzyskać więcej informacji na temat tworzenia szablonów kontrolek dla istniejących kontrolek, zobacz Dostosowywanie wyglądu istniejącej kontrolki przez utworzenie kontrolkiKontrolaTemplate.

Jeśli chcesz zaimplementować własną logikę przechodzenia między stanami, musisz dziedziczyć z VisualStateManagermetody , zastąpić GoToStateCore metodę i ustawić dołączoną VisualStateManager.CustomVisualStateManager właściwość na kontrolce, która używa logiki niestandardowej.

Konstruktory

VisualStateManager()

Inicjuje nowe wystąpienie klasy VisualStateManager.

Pola

CustomVisualStateManagerProperty

CustomVisualStateManager Identyfikuje właściwość zależności.

VisualStateGroupsProperty

VisualStateGroups Identyfikuje właściwość zależności.

Właściwości

DependencyObjectType

Pobiera klasę DependencyObjectType , która opakowuje typ CLR tego wystąpienia.

(Odziedziczone po DependencyObject)
Dispatcher

Pobiera element, z Dispatcher który DispatcherObject jest skojarzony.

(Odziedziczone po DispatcherObject)
IsSealed

Pobiera wartość wskazującą, czy to wystąpienie jest obecnie zapieczętowane (tylko do odczytu).

(Odziedziczone po DependencyObject)

Właściwości dołączone

CustomVisualStateManager

Pobiera lub ustawia VisualStateManager obiekt, który przechodzi między stanami kontrolki.

VisualStateGroups

Pobiera lub ustawia kolekcję VisualStateGroup obiektów.

Metody

CheckAccess()

Określa, czy wątek wywołujący ma dostęp do tego DispatcherObjectelementu .

(Odziedziczone po DispatcherObject)
ClearValue(DependencyProperty)

Czyści wartość lokalną właściwości. Właściwość do wyczyszczenia jest określana przez DependencyProperty identyfikator.

(Odziedziczone po DependencyObject)
ClearValue(DependencyPropertyKey)

Czyści wartość lokalną właściwości tylko do odczytu. Właściwość do wyczyszczenia jest określana przez element DependencyPropertyKey.

(Odziedziczone po DependencyObject)
CoerceValue(DependencyProperty)

Przekształca wartość określonej właściwości zależności. Jest to realizowane przez wywołanie dowolnej CoerceValueCallback funkcji określonej w metadanych właściwości dla właściwości zależności, ponieważ istnieje w wywołaniu DependencyObject.

(Odziedziczone po DependencyObject)
Equals(Object)

Określa, czy podany DependencyObject element jest odpowiednikiem bieżącego DependencyObjectelementu .

(Odziedziczone po DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Pobiera dołączoną CustomVisualStateManager właściwość.

GetHashCode()

Pobiera kod skrótu dla tego DependencyObjectpliku .

(Odziedziczone po DependencyObject)
GetLocalValueEnumerator()

Tworzy wyspecjalizowany moduł wyliczający do określania, które właściwości zależności mają lokalnie ustawione wartości dla tego DependencyObjectelementu .

(Odziedziczone po DependencyObject)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
GetValue(DependencyProperty)

Zwraca bieżącą obowiązującą wartość właściwości zależności dla tego wystąpienia klasy DependencyObject.

(Odziedziczone po DependencyObject)
GetVisualStateGroups(FrameworkElement)

Pobiera dołączoną VisualStateGroups właściwość.

GoToElementState(FrameworkElement, String, Boolean)

Przenosi element między dwoma stanami. Ta metoda służy do przenoszenia stanów zdefiniowanych przez aplikację, a nie zdefiniowanych przez kontrolkę.

GoToState(FrameworkElement, String, Boolean)

Przenosi kontrolę między dwoma stanami. Użyj tej metody, aby przenieść stany kontroli, która ma element ControlTemplate.

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

Przenosi kontrolkę między stanami.

InvalidateProperty(DependencyProperty)

Ponownie oblicza efektywną wartość dla określonej właściwości zależności.

(Odziedziczone po DependencyObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Wywoływane za każdym razem, gdy zostanie zaktualizowana efektywna wartość dowolnej właściwości DependencyObject zależności. Określona właściwość zależności, która została zmieniona, jest zgłaszana w danych zdarzenia.

(Odziedziczone po DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

CurrentStateChanging Wywołuje zdarzenie dla określonego VisualStateGroup obiektu.

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

CurrentStateChanging Wywołuje zdarzenie dla określonego VisualStateGroup obiektu.

ReadLocalValue(DependencyProperty)

Zwraca wartość lokalną właściwości zależności, jeśli istnieje.

(Odziedziczone po DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Ustawia wartość właściwości zależności bez zmieniania jej źródła wartości.

(Odziedziczone po DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Ustawia dołączoną CustomVisualStateManager właściwość.

SetValue(DependencyProperty, Object)

Ustawia wartość lokalną właściwości zależności określonej przez jej identyfikator właściwości zależności.

(Odziedziczone po DependencyObject)
SetValue(DependencyPropertyKey, Object)

Ustawia wartość lokalną właściwości zależności tylko do odczytu określonej przez DependencyPropertyKey identyfikator właściwości zależności.

(Odziedziczone po DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Zwraca wartość wskazującą, czy procesy serializacji powinny serializować wartość dla podanej właściwości zależności.

(Odziedziczone po DependencyObject)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
VerifyAccess()

Wymusza, że wątek wywołujący ma dostęp do tego DispatcherObjectelementu .

(Odziedziczone po DispatcherObject)

Dotyczy