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 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 przenosi wskaźnik myszy na , zmienia się z czerwonego Rectanglena 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 Normal stan nie definiuje .Storyboard Wartość nie Storyboard jest wymagana, Storyboard ponieważ po Rectangle przejściu MouseOver ze stanu do Normal stanu właściwość for MouseOver jest zatrzymana i Color właściwość dla powrotu SolidColorBrush na czerwono.

<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 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, gdy znajduje się w określonym stanie, oraz gdy kontrolka zmienia stany. 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 znajduje się w tym stanie. Stany wizualizacji można dodawać do kontrolki, ustawiając dołączoną VisualStateManager.VisualStateGroups właściwość kontrolki. Każda VisualStateGroup z nich zawiera kolekcję VisualState obiektów, które wzajemnie się wykluczają. Oznacza to, że kontrolka jest zawsze w dokładnie jednym stanie w każdym VisualStateGroupobiekcie .

Kontrolka 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 pliku 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 elemencji), wywołaj metodę GoToElementState . W obu przypadkach VisualStateManager funkcja 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 skojarzony scenorys. Jeśli kontrolka jest włączona State1 i przekazujesz State2 do GoToState programu lub GoToElementState, VisualStateManager rozpoczyna scenorys w State2 programie i zatrzymuje scenorys w programie State1.

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

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ść w kontrolce korzystającej z logiki niestandardowej.

Konstruktory

Nazwa Opis
VisualStateManager()

Inicjuje nowe wystąpienie klasy VisualStateManager.

Pola

Nazwa Opis
CustomVisualStateManagerProperty

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

VisualStateGroupsProperty

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

Właściwości

Nazwa Opis
DependencyObjectType

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

(Odziedziczone po DependencyObject)
Dispatcher

Pobiera elementDispatcher, z 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

Nazwa Opis
CustomVisualStateManager

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

VisualStateGroups

Pobiera lub ustawia kolekcję VisualStateGroup obiektów.

Metody

Nazwa Opis
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 DependencyPropertyKeyelement .

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

(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 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 umożliwia przejście stanów zdefiniowanych przez aplikację, a nie zdefiniowanych przez kontrolkę.

GoToState(FrameworkElement, String, Boolean)

Przenosi kontrolkę 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 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 zostanie zaktualizowana efektywna wartość dowolnej właściwości DependencyObject zależności. 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)

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 ź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ść 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