VisualStateManager Třída

Definice

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 objekty aVisualStateNormalv objektu CommonStatesVisualStateGroup. Když uživatel přesune ukazatel myši na Rectangle, změní se během půl sekundy z červené na zelenou. Když uživatel přesune myš mimo obdélník, Grid okamžitě se změní zpět na červenou. Všimněte si Normal , že stav nedefinuje Storyboard. A Storyboard není vyžadováno, Storyboard protože při Rectangle přechodu ze MouseOver stavu do Normal stavu je hodnota pro MouseOver zastavena a Color vlastnost se SolidColorBrush 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, která je definována 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í objektu ControlTemplate, musel 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 v určitém stavu a při změně stavu ovládacího prvku. Například Button při stisknutí může mít poněkud jiný vzhled, než když není stisknut. Dva stavy, které definice odpovídají tomu, Button 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 daném stavu. Vizuální stavy 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 každém VisualStateGroupstavu přesně v jednom stavu .

Umožňuje VisualStateManager také určit, kdy ovládací prvek přejde do určitého stavu. 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 souboru ControlTemplate, zavolejte metodu GoToState . Další informace o tom, jak vytvořit ovládací prvky, které používají , najdete v VisualStateManagertématu Vytvoření ovládacího prvku, který má přizpůsobitelný vzhled. Pokud použijete VisualStateManager vnější část objektu ControlTemplate (například pokud použijete VisualStateManager objekt v elementu UserControl nebo v jednom prvku), zavolejte metodu GoToElementState . V obou případech provede logiku, VisualStateManager která je potřebná ke vhodnému spuštění a zastavení scénářů, které jsou přidruženy 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žený scénář. Pokud je ovládací prvek in State1 a vy předáte State2 do GoToState nebo GoToElementState, VisualStateManager spustí se scénář v State2 a zastaví scénář v State1.

Ovládací prvky, které jsou součástí Windows Presentation Foundation (WPF), používají ke změně stavů vizuálů VisualStateManager . Při vytváření ControlTemplate ovládacího prvku, který je součástí WPF, můžete přidat VisualState objekty do ovládacích ControlTemplate prvků a určit vzhled ovládacího prvku v určitém stavu. Pokud chcete najít názvy stavů vizuálů ovládacích prvků, které jsou součástí WPF, přečtěte si téma Styly a šablony ovládacích prvků. Logika ovládacího prvku zpracovává přechody mezi stavy, takže nemusíte dělat nic jiného než definovat VisualState objekty v novém ControlTemplateobjektu . Další informace o tom, jak vytvořit šablony ovládacích prvků pro existující ovládací prvky, najdete v tématu Přizpůsobení vzhledu existujícího ovládacího prvku vytvořením ovládacího prvkuTemplate.

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 ovládacího prvku, který používá vlastní logiku.

Konstruktory

VisualStateManager()

Inicializuje novou instanci VisualStateManager třídy.

Pole

CustomVisualStateManagerProperty

Identifikuje CustomVisualStateManager vlastnost závislosti.

VisualStateGroupsProperty

Identifikuje VisualStateGroups vlastnost závislosti.

Vlastnosti

DependencyObjectType

DependencyObjectType Získá, který zabalí typ CLR této instance.

(Zděděno od DependencyObject)
Dispatcher

Získá přidruženou Dispatcher k tomuto DispatcherObject .

(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 má volající vlákno 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á se má vymazat, je určena parametrem DependencyPropertyKey.

(Zděděno od DependencyObject)
CoerceValue(DependencyProperty)

Převede hodnotu zadané vlastnosti závislosti. Toho dosáhnete vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti pro vlastnost závislosti, protože existuje ve volajícím DependencyObjectobjektu .

(Zděděno od DependencyObject)
Equals(Object)

Určuje, zda je zadaný DependencyObject ekvivalent k 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í vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObjectobjektu .

(Zděděno od DependencyObject)
GetType()

Získá aktuální Type instanci.

(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řechodu stavů, které jsou definovány aplikací, nikoli definovány ovládacím prvku.

GoToState(FrameworkElement, String, Boolean)

Přemísí ovládací prvek mezi dvěma stavy. Pomocí této metody můžete převést stavy 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 Objectsouboru .

(Zděděno od Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Vyvolá se vždy, když byla aktualizována efektivní hodnota jakékoli vlastnosti závislosti na této DependencyObject vlastnosti. Specifická 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 hodnoty.

(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 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 DependencyPropertyKey identifikátorem vlastnosti závislosti.

(Zděděno od DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Vrátí hodnotu, která označuje, zda serializační procesy 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()

Vynutí, aby volající vlákno má přístup k tomuto DispatcherObject.

(Zděděno od DispatcherObject)

Platí pro