Udostępnij za pośrednictwem


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 Rectangle i dodaje VisualStateGroup o nazwie CommonStates do dołączonej właściwości VisualStateManager.VisualStatesGroups. W przykładzie zdefiniowano obiekty MouseOver i NormalVisualState w CommonStatesVisualStateGroup. Gdy użytkownik przenosi wskaźnik myszy na Rectangle, zmienia się z czerwonego na zielony ponad połowę sekundy. Gdy użytkownik przenosi mysz z dala od prostokąta, Grid natychmiast zmienia się z powrotem na czerwony. Należy pamiętać, że stan Normal nie definiuje Storyboard. Nie jest wymagana Storyboard, ponieważ gdy Rectangle przechodzi ze stanu MouseOver do stanu Normal, Storyboard dla MouseOver jest zatrzymana, a właściwość Color dla SolidColorBrush powróci do czerwonego.

<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ą ControlTemplate, 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

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

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 w ControlTemplate, wywołaj metodę GoToState. Aby uzyskać więcej informacji na temat tworzenia kontrolek korzystających z VisualStateManager, zobacz Tworzenie kontrolki, która ma dostosowywalny wygląd. Jeśli używasz VisualStateManager poza ControlTemplate (na przykład jeśli używasz VisualStateManager w UserControl lub w jednym elemencji), wywołaj metodę GoToElementState. W obu przypadkach VisualStateManager wykonuje logikę wymaganą do odpowiedniego uruchomienia i zatrzymania scenorysów skojarzonych ze stanem zaangażowanym. Załóżmy na przykład, że kontrolka definiuje stany, State1 i State2, z których każda ma skojarzony scenorys. Jeśli kontrolka znajduje się w State1 i przekazujesz State2 do GoToState lub GoToElementState, VisualStateManager rozpoczyna scenorys w State2 i zatrzymuje scenorys w State1.

Kontrolki dołączone do programu Windows Presentation Foundation (WPF) używają VisualStateManager do zmieniania stanów wizualizacji. Podczas tworzenia ControlTemplate dla kontrolki dołączonej do platformy WPF można dodać VisualState obiektów do ControlTemplate kontrolki 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 kontrolek i szablony. Logika kontrolki obsługuje przechodzenie między stanami, więc nie trzeba wykonywać żadnych czynności innych niż definiowanie obiektów VisualState w nowym ControlTemplate. Aby uzyskać więcej informacji na temat tworzenia szablonów kontrolek dla istniejących kontrolek, zobacz Dostosowywanie wyglądu istniejącej kontrolki przez utworzenie kontrolki ControlTemplate.

Jeśli chcesz zaimplementować własną logikę przechodzenia między stanami, musisz dziedziczyć z VisualStateManager, zastąpić metodę GoToStateCore i ustawić właściwość VisualStateManager.CustomVisualStateManager dołączoną do kontrolki korzystającej z logiki niestandardowej.

Konstruktory

VisualStateManager()

Inicjuje nowe wystąpienie klasy VisualStateManager.

Pola

CustomVisualStateManagerProperty

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

VisualStateGroupsProperty

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

Właściwości

DependencyObjectType

Pobiera DependencyObjectType, który opakowuje typ CLR tego wystąpienia.

(Odziedziczone po DependencyObject)
Dispatcher

Pobiera Dispatcher jest skojarzony z tym DispatcherObject.

(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 obiekt VisualStateManager, który przechodzi między stanami kontrolki.

VisualStateGroups

Pobiera lub ustawia kolekcję obiektów VisualStateGroup.

Metody

CheckAccess()

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

(Odziedziczone po DispatcherObject)
ClearValue(DependencyProperty)

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

(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 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 funkcji CoerceValueCallback określonej w metadanych właściwości dla właściwości, ponieważ istnieje w wywołaniu DependencyObject.

(Odziedziczone po DependencyObject)
Equals(Object)

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

(Odziedziczone po DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

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

GetHashCode()

Pobiera kod skrótu dla tego DependencyObject.

(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 na tym DependencyObject.

(Odziedziczone po DependencyObject)
GetType()

Pobiera Type 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 DependencyObject.

(Odziedziczone po DependencyObject)
GetVisualStateGroups(FrameworkElement)

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

GoToElementState(FrameworkElement, String, Boolean)

Przenosi element między dwoma stanami. Ta metoda umożliwia przejście stanów zdefiniowanych przez aplikację, a nie zdefiniowanych przez kontrolkę.

GoToState(FrameworkElement, String, Boolean)

Przenosi kontrolkę między dwoma stanami. Ta metoda umożliwia przejście stanów kontroli z ControlTemplate.

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

Przenosi kontrolkę między stanami.

InvalidateProperty(DependencyProperty)

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

(Odziedziczone po DependencyObject)
MemberwiseClone()

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

(Odziedziczone po Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

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

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

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

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

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

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 źródła wartości.

(Odziedziczone po DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

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

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śloną przez identyfikator DependencyPropertyKey właściwości zależności.

(Odziedziczone po DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Zwraca wartość wskazującą, czy procesy serializacji powinny serializować wartość 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 DispatcherObject.

(Odziedziczone po DispatcherObject)

Dotyczy