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 oggetto 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 Rectanglemouse su , passa dal rosso al verde oltre un mezzo secondo. Quando l'utente sposta il mouse lontano dal rettangolo, torna Grid immediatamente in rosso. Si noti che lo Normal stato non definisce un oggetto Storyboard. Un Storyboard oggetto non è obbligatorio perché quando passa Rectangle dallo MouseOver stato allo Normal stato , l'oggetto Storyboard for MouseOver viene arrestato e la Color proprietà per il SolidColorBrush ritorno 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 dovrà 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

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 stato. 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. Contiene VisualState 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 nel 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 in VisualStateManager , ControlTemplatechiamare il GoToState metodo . Per altre informazioni su come creare controlli che usano , VisualStateManagervedere 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, 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, avvia VisualStateManager lo storyboard in State2 e arresta lo storyboard in State1.

I controlli inclusi in Windows Presentation Foundation (WPF) usano VisualStateManager per 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 Come creare un modello per un controllo.

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

Nome Descrizione
VisualStateManager()

Inizializza una nuova istanza della classe VisualStateManager.

Campi

Nome Descrizione
CustomVisualStateManagerProperty

Identifica la CustomVisualStateManager proprietà di dipendenza.

VisualStateGroupsProperty

Identifica la VisualStateGroups proprietà di dipendenza.

Proprietà

Nome Descrizione
DependencyObjectType

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

(Ereditato da DependencyObject)
Dispatcher

Ottiene l'oggetto DispatcherDispatcherObject a cui è associato.

(Ereditato da DispatcherObject)
IsSealed

Ottiene un valore che indica se questa istanza è attualmente sealed (sola lettura).

(Ereditato da DependencyObject)

Proprietà associate

Nome Descrizione
CustomVisualStateManager

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

VisualStateGroups

Ottiene o imposta una raccolta di VisualStateGroup oggetti .

Metodi

Nome Descrizione
CheckAccess()

Determina se il thread chiamante ha accesso a questo DispatcherObjectoggetto .

(Ereditato da DispatcherObject)
ClearValue(DependencyProperty)

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

(Ereditato da DependencyObject)
ClearValue(DependencyPropertyKey)

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

(Ereditato da DependencyObject)
CoerceValue(DependencyProperty)

Forza il valore della proprietà di dipendenza specificata. A tale scopo, richiamare qualsiasi CoerceValueCallback funzione specificata nei metadati della proprietà per la proprietà di dipendenza così come esiste nella chiamata DependencyObjectdi .

(Ereditato da DependencyObject)
Equals(Object)

Determina se un oggetto specificato DependencyObject è equivalente all'oggetto corrente DependencyObject.

(Ereditato da DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Ottiene la CustomVisualStateManager proprietà associata.

GetHashCode()

Ottiene un codice hash per l'oggetto DependencyObject.

(Ereditato da DependencyObject)
GetLocalValueEnumerator()

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

(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 oggetto DependencyObject.

(Ereditato da DependencyObject)
GetVisualStateGroups(FrameworkElement)

Ottiene la 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 oggetto 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 oggetto è 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 specificato VisualStateGroup .

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

Genera l'evento CurrentStateChanging sull'oggetto specificato VisualStateGroup .

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

(Ereditato da DispatcherObject)

Si applica a