VisualStateManager Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 Normal
VisualState w obiekcie CommonStates
VisualStateGroup. 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 State1
State2
, 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla