VisualStateManager Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spravuje stavy a logiku pro přechod mezi stavy ovládacích prvků.
public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
- Dědičnost
Příklady
Následující příklad vytvoří Rectangle a přidá VisualStateGroup pojmenovanou CommonStates
do VisualStateManager.VisualStatesGroups
připojené vlastnosti. Příklad definuje MouseOver
a Normal
VisualState objekty v CommonStates
VisualStateGroup. Když uživatel přesune ukazatel myši na Rectangle, změní se z červené na zelenou přes jednu půl sekundu. Když uživatel přesune myš od obdélníku, Grid okamžitě změní zpět na červenou. Všimněte si, že Normal
stav nedefinuje Storyboard. Není vyžadován Storyboard, protože když Rectangle přejde ze stavu MouseOver
do stavu Normal
, zastaví se Storyboard pro MouseOver
a Color vlastnost SolidColorBrush se vrátí na červenou.
<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>
Následující příklad ukazuje obslužnou rutinu události definovanou v předchozím příkladu a volá metodu GoToElementState pro přechod mezi stavy. Pokud byl obdélník v předchozím příkladu součástí ControlTemplate, příklad by musel volat GoToState metodu.
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
Poznámky
VisualStateManager umožňuje určit stavy ovládacího prvku, vzhled ovládacího prvku, když je v určitém stavu, a když ovládací prvek změní stav. Například Button může mít mírně odlišný vzhled, když je stisknuto, než když není stisknuto. Dva stavy, že Button definuje, kdy se stiskne ("Pressed"
) a kdy není ("Normal"
). Vzhled ovládacího prvku, když je ve stavu, je definován VisualState.
VisualState obsahuje kolekci Storyboard objektů, které určují, jak se vzhled ovládacího prvku změní, když je ovládací prvek v daném stavu. Do ovládacího prvku přidáte stavy vizuálů nastavením VisualStateManager.VisualStateGroups
připojené vlastnosti ovládacího prvku. Každý VisualStateGroup obsahuje kolekci VisualState objektů, které se vzájemně vylučují. To znamená, že ovládací prvek je vždy v přesně jednom stavu v každém VisualStateGroup.
VisualStateManager také umožňuje určit, kdy ovládací prvek zadá určitý stav. Metoda, kterou byste měli volat ke změnám stavů, závisí na vašem scénáři. Pokud vytvoříte ovládací prvek, který používá VisualStateManager v jeho ControlTemplate, zavolejte metodu GoToState. Další informace o vytváření ovládacích prvků, které používají VisualStateManager, naleznete v tématu Vytvoření ovládacího prvku, který má přizpůsobitelný vzhled. Pokud použijete VisualStateManager mimo ControlTemplate (například pokud použijete VisualStateManager v UserControl nebo v jednom prvku), zavolejte metodu GoToElementState. V obou případech VisualStateManager provede logiku, která je nutná k odpovídajícímu spuštění a zastavení scénářů přidružených k příslušnému stavu. Předpokládejme například, že ovládací prvek definuje stavy, State1
a State2
, z nichž každý má přidruženou scénář. Pokud je ovládací prvek v State1
a předáte State2
GoToState nebo GoToElementState, VisualStateManager spustí scénář v State2
a zastaví scénář v State1
.
Ovládací prvky, které jsou součástí windows Presentation Foundation (WPF), používají VisualStateManager ke změně vizuálních stavů. Když vytvoříte ControlTemplate pro ovládací prvek, který je součástí WPF, můžete přidat VisualState objekty do ControlTemplate ovládacího prvku a určit vzhled ovládacího prvku v určitém stavu. Názvy stavů vizuálů pro ovládací prvky, které jsou součástí WPF, najdete v tématu styly ovládacích prvků a šablony. Logika ovládacího prvku zpracovává přechod mezi stavy, takže nemusíte dělat nic jiného, než definovat VisualState objekty v novém ControlTemplate. Další informace o vytváření šablon ovládacích prvků pro existující ovládací prvky naleznete v tématu Přizpůsobení vzhledu existujícího ovládacího prvku vytvořením ControlTemplate.
Pokud chcete implementovat vlastní logiku pro přechod mezi stavy, musíte dědit z VisualStateManager, přepsat GoToStateCore metodu a nastavit VisualStateManager.CustomVisualStateManager připojenou vlastnost ovládacího prvku, který používá vlastní logiku.
Konstruktory
VisualStateManager() |
Inicializuje novou instanci VisualStateManager třídy. |
Pole
CustomVisualStateManagerProperty |
Identifikuje vlastnost závislosti CustomVisualStateManager. |
VisualStateGroupsProperty |
Identifikuje vlastnost závislosti VisualStateGroups. |
Vlastnosti
DependencyObjectType |
Získá DependencyObjectType, který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
Dispatcher |
Získá Dispatcher tento DispatcherObject je přidružen. (Zděděno od DispatcherObject) |
IsSealed |
Získá hodnotu, která označuje, zda je tato instance aktuálně zapečetěna (jen pro čtení). (Zděděno od DependencyObject) |
Přidružené vlastnosti
CustomVisualStateManager |
Získá nebo nastaví VisualStateManager objekt, který přechází mezi stavy ovládacího prvku. |
VisualStateGroups |
Získá nebo nastaví kolekci VisualStateGroup objektů. |
Metody
CheckAccess() |
Určuje, zda volající vlákno má přístup k této DispatcherObject. (Zděděno od DispatcherObject) |
ClearValue(DependencyProperty) |
Vymaže místní hodnotu vlastnosti. Vlastnost, která se má vymazat, je určena identifikátorem DependencyProperty. (Zděděno od DependencyObject) |
ClearValue(DependencyPropertyKey) |
Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která má být vymazána, je určena DependencyPropertyKey. (Zděděno od DependencyObject) |
CoerceValue(DependencyProperty) |
Převede hodnotu zadané vlastnosti závislosti. Toho lze dosáhnout vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti pro vlastnost závislost, protože existuje ve volajícím DependencyObject. (Zděděno od DependencyObject) |
Equals(Object) |
Určuje, zda zadaný DependencyObject odpovídá aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
GetCustomVisualStateManager(FrameworkElement) |
Získá CustomVisualStateManager připojenou vlastnost. |
GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObject. (Zděděno od DependencyObject) |
GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
GetValue(DependencyProperty) |
Vrátí aktuální efektivní hodnotu vlastnosti závislosti na této instanci DependencyObject. (Zděděno od DependencyObject) |
GetVisualStateGroups(FrameworkElement) |
Získá VisualStateGroups připojenou vlastnost. |
GoToElementState(FrameworkElement, String, Boolean) |
Přemísí prvek mezi dvěma stavy. Tuto metodu použijte k převodu stavů definovaných aplikací, nikoli definovaných ovládacím prvku. |
GoToState(FrameworkElement, String, Boolean) |
Přemísí ovládací prvek mezi dvěma stavy. Pomocí této metody lze převést stavy u ovládacího prvku, který má ControlTemplate. |
GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) |
Přemísí ovládací prvek mezi stavy. |
InvalidateProperty(DependencyProperty) |
Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Vyvolána vždy, když byla aktualizována efektivní hodnota jakékoli vlastnosti závislosti na této DependencyObject. Konkrétní vlastnost závislosti, která se změnila, je hlášena v datech události. (Zděděno od DependencyObject) |
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Vyvolá CurrentStateChanging událost u zadaného objektu VisualStateGroup. |
RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Vyvolá CurrentStateChanging událost u zadaného objektu VisualStateGroup. |
ReadLocalValue(DependencyProperty) |
Vrátí místní hodnotu vlastnosti závislosti, pokud existuje. (Zděděno od DependencyObject) |
SetCurrentValue(DependencyProperty, Object) |
Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnot. (Zděděno od DependencyObject) |
SetCustomVisualStateManager(FrameworkElement, VisualStateManager) |
Nastaví CustomVisualStateManager připojenou vlastnost. |
SetValue(DependencyProperty, Object) |
Nastaví místní hodnotu vlastnosti závislosti určenou jeho identifikátorem vlastnosti závislosti. (Zděděno od DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Nastaví místní hodnotu vlastnosti závislosti jen pro čtení určenou identifikátorem DependencyPropertyKey vlastnosti závislosti. (Zděděno od DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Vrátí hodnotu, která určuje, zda procesy serializace mají serializovat hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
VerifyAccess() |
Vynucuje, že volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |