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á pojmenovaný VisualStateGroupCommonStates do VisualStateManager.VisualStatesGroups připojené vlastnosti. Příklad definuje MouseOver a NormalVisualState objekty v objektu CommonStatesVisualStateGroup. Když uživatel přesune ukazatel myši na Rectangleukazatel myši , 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ě se změní zpět na červenou. Všimněte si, že Normal stav nedefinuje Storyboard. A Storyboard není vyžadováno, protože při Rectangle přechodu ze MouseOver stavu do Normal stavu Storyboard je hodnota for MouseOver zastavena a Color vlastnost návratu SolidColorBrush 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í , ControlTemplatemusel by příklad volat metodu 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
Poznámky
Umožňuje VisualStateManager 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 může mít trochu jiný vzhled, Button když je stisknuto, než když není stisknuto. Dva stavy, že Button definice odpovídají, když je stisknuta ("Pressed") a kdy není ("Normal"). Vzhled ovládacího prvku, když je ve stavu, je definován pomocí VisualState. A VisualState obsahuje kolekci Storyboard objektů, které určují, jak se vzhled ovládacího prvku změní, když je ovládací prvek v tomto stavu. Stavy vizuálů přidáte do ovládacího prvku 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 každého VisualStateGroup.
Umožňuje VisualStateManager také 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í ovládací VisualStateManagerprvky , naleznete v tématu Vytvoření ovládacího prvku, který má přizpůsobitelný vzhled. Pokud používáte VisualStateManager mimo objekt ControlTemplate (například pokud používáte VisualStateManager v UserControl jednom prvku nebo v jednom prvku), zavolejte metodu GoToElementState . V obou případech provede logiku, VisualStateManager 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 State2každý z nich má přidruženou scénář. Pokud je ovládací prvek v State1 a předáte GoToStateState2 nebo GoToElementState, VisualStateManager spustí scénář a State2 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 ovládací prvek, který je součástí WPF, můžete do ovládacího prvku ControlTemplate přidat VisualState objekty, které určují 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 tom, jak vytvořit šablony ovládacích prvků pro existující ovládací prvky, naleznete v tématu Vytvoření šablony pro ovládací prvek.
Pokud chcete implementovat vlastní logiku pro přechod mezi stavy, musíte dědit z VisualStateManager, přepsat metodu GoToStateCore a nastavit připojenou VisualStateManager.CustomVisualStateManager vlastnost na ovládacím prvku, který používá vlastní logiku.
Konstruktory
| Name | Description |
|---|---|
| VisualStateManager() |
Inicializuje novou instanci VisualStateManager třídy. |
Pole
| Name | Description |
|---|---|
| CustomVisualStateManagerProperty |
Identifikuje CustomVisualStateManager vlastnost závislosti. |
| VisualStateGroupsProperty |
Identifikuje VisualStateGroups vlastnost závislosti. |
Vlastnosti
| Name | Description |
|---|---|
| DependencyObjectType |
DependencyObjectType Získá ten, který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
| Dispatcher |
Dispatcher Získá toto 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
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| CheckAccess() |
Určuje, zda volající vlákno má přístup k tomuto 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 parametrem DependencyPropertyKey. (Zděděno od DependencyObject) |
| CoerceValue(DependencyProperty) |
Převede hodnotu zadané vlastnosti závislosti. Toho se dosahuje vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastností pro vlastnost závislosti, protože existuje ve volání DependencyObject. (Zděděno od DependencyObject) |
| Equals(Object) |
Určuje, zda je poskytnutá DependencyObject hodnota ekvivalentní aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
| GetCustomVisualStateManager(FrameworkElement) |
Získá připojenou CustomVisualStateManager vlastnost. |
| GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
| GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení, které vlastnosti závislosti mají místně nastavené hodnoty na 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 objektu DependencyObject. (Zděděno od DependencyObject) |
| GetVisualStateGroups(FrameworkElement) |
Získá připojenou VisualStateGroups 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 vlastnosti. 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) |
CurrentStateChanging Vyvolá událost u zadaného VisualStateGroup objektu. |
| RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
CurrentStateChanging Vyvolá událost u zadaného VisualStateGroup objektu. |
| 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í připojenou CustomVisualStateManager 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) |