VisualStateManager Classe

Definizione

Gestisce gli stati e la logica per la transizione tra stati dei controlli.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Ereditarietà

Esempio

Nell'esempio seguente viene creato un oggetto Rectangle e viene aggiunto un VisualStateGroup oggetto denominato CommonStates alla VisualStateManager.VisualStatesGroups proprietà associata. Nell'esempio vengono definiti gli MouseOver oggetti e NormalVisualState in CommonStatesVisualStateGroup. Quando l'utente sposta il puntatore del mouse su Rectangle, passa da rosso a verde su mezzo secondo. Quando l'utente sposta il mouse lontano dal rettangolo, il Grid cambia immediatamente in rosso. Si noti che lo Normal stato non definisce un oggetto Storyboard. Un Storyboard oggetto non è obbligatorio perché quando l'oggetto MouseOverRectangle passa dallo stato allo Normal stato , l'oggetto Storyboard for MouseOver viene arrestato e la Color proprietà per il SolidColorBrush restituisce in rosso.

<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>

Nell'esempio seguente viene illustrato il gestore eventi definito nell'esempio precedente e viene chiamato il GoToElementState metodo per la transizione tra stati. Se il rettangolo nell'esempio precedente faceva parte di un ControlTemplateoggetto , l'esempio deve chiamare il GoToState metodo .

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

Commenti

Consente VisualStateManager di specificare gli stati per un controllo, l'aspetto di un controllo quando si trova in un determinato stato e quando un controllo cambia stati. Ad esempio, un Button oggetto potrebbe avere un aspetto leggermente diverso quando viene premuto rispetto a quando non viene premuto. Due stati che Button definiscono corrispondono a quando viene premuto ("Pressed") e quando non è ("Normal"). L'aspetto di un controllo quando si trova in uno stato è definito da un oggetto VisualState. Un VisualState oggetto contiene una raccolta di Storyboard oggetti che specificano la modalità di modifica dell'aspetto del controllo quando il controllo si trova in tale stato. È possibile aggiungere stati di visualizzazione a un controllo impostando la VisualStateManager.VisualStateGroups proprietà associata sul controllo . Ogni VisualStateGroup oggetto contiene una raccolta di VisualState oggetti che si escludono a vicenda. Ovvero, il controllo è sempre in uno stato di in ogni VisualStateGroup.

Consente VisualStateManager inoltre di specificare quando un controllo entra in uno stato specifico. Il metodo che è necessario chiamare per modificare gli stati dipende dallo scenario in uso. Se si crea un controllo che usa VisualStateManager nella classe ControlTemplate, chiamare il GoToState metodo . Per altre informazioni su come creare controlli che usano VisualStateManager, vedere Creazione di un controllo con un aspetto personalizzabile. Se si usa l'esterno VisualStateManager di un ControlTemplate oggetto , ad esempio se si usa un VisualStateManager oggetto in un UserControl oggetto o in un singolo elemento, chiamare il GoToElementState metodo . In entrambi i casi, esegue VisualStateManager la logica necessaria per avviare e arrestare in modo appropriato gli storyboard associati allo stato interessato. Si supponga, ad esempio, che un controllo definisca gli stati State1 e State2, ognuno dei quali ha uno storyboard associato. Se il controllo è in State1 e si passa State2 a GoToState o GoToElementState, avvia VisualStateManager lo storyboard in State2 e arresta lo storyboard in State1.

I controlli inclusi in Windows Presentation Foundation (WPF) usano per VisualStateManager modificare gli stati di visualizzazione. Quando si crea un ControlTemplate oggetto per un controllo incluso in WPF, è possibile aggiungere VisualState oggetti al controllo per specificare l'aspetto del controllo ControlTemplate in un determinato stato. Per trovare i nomi degli stati di visualizzazione per i controlli inclusi in WPF, vedere Stili e modelli di controllo. La logica del controllo gestisce la transizione tra gli stati, pertanto non è necessario eseguire alcuna operazione diversa da definire gli VisualState oggetti nel nuovo ControlTemplateoggetto . Per altre informazioni su come creare modelli di controllo per i controlli esistenti, vedere Personalizzazione dell'aspetto di un controllo esistente creando un controlTemplate.

Se si vuole implementare una logica personalizzata per la transizione tra stati, è necessario ereditare da VisualStateManager, eseguire l'override del GoToStateCore metodo e impostare la VisualStateManager.CustomVisualStateManager proprietà associata nel controllo che usa la logica personalizzata.

Costruttori

VisualStateManager()

Inizializza una nuova istanza della classe VisualStateManager.

Campi

CustomVisualStateManagerProperty

Identifica la proprietà di dipendenza CustomVisualStateManager.

VisualStateGroupsProperty

Identifica la proprietà di dipendenza VisualStateGroups.

Proprietà

DependencyObjectType

Ottiene l'oggetto DependencyObjectType che esegue il wrapping del tipo CLR di questa istanza.

(Ereditato da DependencyObject)
Dispatcher

Ottiene l'oggetto Dispatcher associato a DispatcherObject.

(Ereditato da DispatcherObject)
IsSealed

Ottiene un valore che indica se l'istanza è attualmente sealed (di sola lettura).

(Ereditato da DependencyObject)

Proprietà associate

CustomVisualStateManager

Ottiene o imposta l'oggetto VisualStateManager che esegue la transizione tra gli stati di un controllo.

VisualStateGroups

Ottiene o imposta una raccolta di oggetti VisualStateGroup.

Metodi

CheckAccess()

Determina se il thread chiamante ha accesso a DispatcherObject.

(Ereditato da DispatcherObject)
ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà. La proprietà da cancellare è specificata da un identificatore DependencyProperty.

(Ereditato da DependencyObject)
ClearValue(DependencyPropertyKey)

Cancella il valore locale di una proprietà di sola lettura. La proprietà da cancellare è specificata da un oggetto DependencyPropertyKey.

(Ereditato da DependencyObject)
CoerceValue(DependencyProperty)

Assegna forzatamente il valore della proprietà di dipendenza specificata. Questa operazione viene eseguita richiamando qualsiasi funzione CoerceValueCallback specificata nei metadati della proprietà di dipendenza esistente nell'oggetto DependencyObject chiamante.

(Ereditato da DependencyObject)
Equals(Object)

Determina se l'oggetto DependencyObject specificato equivale all'oggetto DependencyObject corrente.

(Ereditato da DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ottiene la proprietà associata CustomVisualStateManager.

GetHashCode()

Ottiene un codice hash per l'oggetto DependencyObject.

(Ereditato da DependencyObject)
GetLocalValueEnumerator()

Crea un enumeratore specializzato per determinare le proprietà di dipendenza che presentano valori impostati localmente nell'oggetto DependencyObject.

(Ereditato da DependencyObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza in questa istanza di DependencyObject.

(Ereditato da DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ottiene la proprietà associata VisualStateGroups.

GoToElementState(FrameworkElement, String, Boolean)

Esegue la transizione dell'elemento tra due stati. Utilizzare questo metodo per eseguire la transizione degli stati definiti da un'applicazione, anziché da un controllo.

GoToState(FrameworkElement, String, Boolean)

Esegue la transizione del controllo tra due stati. Utilizzare questo metodo per eseguire la transizione di stati su un controllo che ha un oggetto ControlTemplate.

GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean)

Consente a un controllo di eseguire la transizione tra stati.

InvalidateProperty(DependencyProperty)

Valuta di nuovo il valore effettivo della proprietà di dipendenza specificata.

(Ereditato da DependencyObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Richiamato ogni volta che viene aggiornato il valore effettivo di qualsiasi proprietà di dipendenza in DependencyObject. La proprietà di dipendenza specifica modificata viene indicata nei dati dell'evento.

(Ereditato da DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera l'evento CurrentStateChanging sull'oggetto VisualStateGroup specificato.

RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Genera l'evento CurrentStateChanging sull'oggetto VisualStateGroup specificato.

ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se esistente.

(Ereditato da DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Imposta il valore di una proprietà di dipendenza senza modificare l'origine del valore.

(Ereditato da DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Imposta la proprietà associata CustomVisualStateManager.

SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza, specificato dal relativo identificatore della proprietà di dipendenza.

(Ereditato da DependencyObject)
SetValue(DependencyPropertyKey, Object)

Imposta il valore locale di una proprietà di dipendenza di sola lettura, specificato dall'identificatore DependencyPropertyKey della proprietà di dipendenza.

(Ereditato da DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore della proprietà di dipendenza specificata.

(Ereditato da DependencyObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
VerifyAccess()

Impone che il thread chiamante abbia accesso a DispatcherObject.

(Ereditato da DispatcherObject)

Si applica a