Condividi tramite


VisualStateManager Classe

Definizione

Gestisce gli stati e la logica per la transizione tra stati per i 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 Rectangle e viene aggiunto un VisualStateGroup denominato CommonStates alla proprietà associata VisualStateManager.VisualStatesGroups. Nell'esempio vengono definiti gli oggetti MouseOver e NormalVisualState nel CommonStatesVisualStateGroup. Quando l'utente sposta il puntatore del mouse sulla Rectangle, passa dal rosso al verde in mezzo secondo. Quando l'utente sposta il mouse lontano dal rettangolo, il Grid torna immediatamente in rosso. Si noti che lo stato Normal non definisce un Storyboard. Non è necessario un Storyboard perché quando il Rectangle passa dallo stato di MouseOver allo stato Normal, il Storyboard per MouseOver viene arrestato e la proprietà Color per il SolidColorBrush torna 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 metodo GoToElementState per eseguire la transizione tra stati. Se il rettangolo nell'esempio precedente faceva parte di un ControlTemplate, l'esempio dovrà chiamare il metodo 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

Commenti

Il VisualStateManager consente 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 potrebbe avere un aspetto leggermente diverso quando viene premuto rispetto a quando non viene premuto. Due stati che il Button definisce corrispondono quando viene premuto ("Pressed") e quando non è ("Normal"). L'aspetto di un controllo quando si trova in uno stato è definito da un VisualState. Un VisualState contiene una raccolta di oggetti Storyboard 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 proprietà associata VisualStateManager.VisualStateGroups nel controllo . Ogni VisualStateGroup contiene una raccolta di oggetti VisualState che si escludono a vicenda. Ovvero, il controllo è sempre in uno stato di in ogni VisualStateGroup.

Il VisualStateManager consente anche 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 il VisualStateManager nel relativo ControlTemplate, chiamare il metodo GoToState. Per altre informazioni su come creare controlli che usano il VisualStateManager, vedere Creazione di un controllo con aspetto personalizzabile. Se si usa il VisualStateManager all'esterno di un ControlTemplate, ad esempio se si usa un VisualStateManager in un UserControl o in un singolo elemento, chiamare il metodo GoToElementState. In entrambi i casi, il VisualStateManager esegue la logica necessaria per avviare e arrestare in modo appropriato gli storyboard associati allo stato coinvolto. 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, il VisualStateManager avvia lo storyboard in State2 e arresta lo storyboard in State1.

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

Se si vuole implementare una logica personalizzata per la transizione tra stati, è necessario ereditare da VisualStateManager, eseguire l'override del metodo GoToStateCore e impostare la proprietà associata VisualStateManager.CustomVisualStateManager sul 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 il DependencyObjectType che esegue il wrapping del tipo CLR di questa istanza.

(Ereditato da DependencyObject)
Dispatcher

Ottiene il Dispatcher a cui è associato questo DispatcherObject.

(Ereditato da DispatcherObject)
IsSealed

Ottiene un valore che indica se questa istanza è attualmente sealed (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 questo DispatcherObject.

(Ereditato da DispatcherObject)
ClearValue(DependencyProperty)

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

(Ereditato da DependencyObject)
ClearValue(DependencyPropertyKey)

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

(Ereditato da DependencyObject)
CoerceValue(DependencyProperty)

Forza il valore della proprietà di dipendenza specificata. Questa operazione viene eseguita richiamando qualsiasi funzione CoerceValueCallback specificata nei metadati delle proprietà per la proprietà di dipendenza così come esiste nella chiamata DependencyObject.

(Ereditato da DependencyObject)
Equals(Object)

Determina se un DependencyObject specificato è equivalente all'DependencyObjectcorrente.

(Ereditato da DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ottiene l'CustomVisualStateManager proprietà associata.

GetHashCode()

Ottiene un codice hash per questo DependencyObject.

(Ereditato da DependencyObject)
GetLocalValueEnumerator()

Crea un enumeratore specializzato per determinare quali proprietà di dipendenza hanno valori impostati localmente in questo DependencyObject.

(Ereditato da DependencyObject)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
GetValue(DependencyProperty)

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

(Ereditato da DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ottiene l'VisualStateGroups proprietà associata.

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é definiti da un controllo .

GoToState(FrameworkElement, String, Boolean)

Esegue la transizione del controllo tra due stati. Utilizzare questo metodo per eseguire la transizione degli stati nel controllo con un ControlTemplate.

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

Esegue la transizione di un controllo tra stati.

InvalidateProperty(DependencyProperty)

Rivaluta il valore effettivo per la proprietà di dipendenza specificata.

(Ereditato da DependencyObject)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Richiamato ogni volta che il valore effettivo di qualsiasi proprietà di dipendenza in questo DependencyObject è stato aggiornato. La proprietà di dipendenza specifica modificata viene segnalata 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 modificarne l'origine del valore.

(Ereditato da DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Imposta la CustomVisualStateManager proprietà associata.

SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza, specificato dall'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 per la 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 questo DispatcherObject.

(Ereditato da DispatcherObject)

Si applica a