VisualStateManager Classe

Definição

Gerencia os estados e a lógica para fazer a transição entre estados para controles.Manages states and the logic for transitioning between states for controls.

public ref class VisualStateManager : System::Windows::DependencyObject
public class VisualStateManager : System.Windows.DependencyObject
type VisualStateManager = class
    inherit DependencyObject
Public Class VisualStateManager
Inherits DependencyObject
Herança

Exemplos

O exemplo a seguir cria um Rectangle e adiciona um VisualStateGroup nomeado CommonStates à VisualStateManager.VisualStatesGroups Propriedade anexada.The following example creates a Rectangle and adds a VisualStateGroup named CommonStates to the VisualStateManager.VisualStatesGroups attached property. O exemplo define os MouseOver Normal VisualState objetos e no CommonStates VisualStateGroup .The example defines the MouseOver and NormalVisualState objects in the CommonStatesVisualStateGroup. Quando o usuário move o ponteiro do mouse sobre o Rectangle , ele muda de vermelho para verde em um meio segundo.When the user moves the mouse pointer over the Rectangle, it changes from red to green over one half second. Quando o usuário move o mouse para longe do retângulo, o Grid imediatamente muda de volta para vermelho.When the user moves the mouse away from the rectangle, the Grid immediately changes back to red. Observe que o Normal estado não define um Storyboard .Note that the Normal state does not define a Storyboard. Um Storyboard não é necessário porque, quando a Rectangle transição do MouseOver estado para o Normal estado, o for Storyboard MouseOver é interrompido e a Color propriedade de SolidColorBrush retorna para vermelho.A Storyboard is not required because when the Rectangle transitions from the MouseOver state to the Normal state, the Storyboard for MouseOver is stopped and the Color property for the SolidColorBrush returns to red.

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

O exemplo a seguir mostra o manipulador de eventos que está definido no exemplo anterior e chama o GoToElementState método para fazer a transição entre Estados.The following example shows the event handler that is defined in the previous example and calls the GoToElementState method to transition between states. Se o retângulo no exemplo anterior fosse parte de um ControlTemplate , o exemplo teria que chamar o GoToState método.If the rectangle in the previous example was part of a ControlTemplate, the example would have to call the GoToState method.

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

Comentários

O VisualStateManager permite que você especifique Estados para um controle, a aparência de um controle quando ele está em um determinado Estado e quando um controle altera os Estados.The VisualStateManager enables you to specify states for a control, the appearance of a control when it is in a certain state, and when a control changes states. Por exemplo, um Button pode ter uma aparência um pouco diferente quando é pressionado do que quando não é pressionado.For example, a Button might have a slightly different appearance when it is pressed than when it is not pressed. Dois Estados que o Button define corresponde ao quando é pressionado ( "Pressed" ) e quando não é ( "Normal" ).Two states that the Button defines correspond to when it is pressed ("Pressed") and when it is not ("Normal"). A aparência de um controle quando ele está em um estado é definido por um VisualState .The appearance of a control when it is in a state is defined by a VisualState. Um VisualState contém uma coleção de Storyboard objetos que especificam como a aparência do controle é alterada quando o controle está nesse estado.A VisualState contains a collection of Storyboard objects that specify how the control's appearance changes when the control is in that state. Você adiciona estados visuais a um controle definindo a VisualStateManager.VisualStateGroups Propriedade anexada no controle.You add visual states to a control by setting the VisualStateManager.VisualStateGroups attached property on the control. Cada VisualStateGroup contém uma coleção de VisualState objetos que são mutuamente exclusivos.Each VisualStateGroup contains a collection of VisualState objects that are mutually exclusive. Ou seja, o controle está sempre em exatamente um estado de cada um VisualStateGroup .That is, the control is always in exactly one state of in each VisualStateGroup.

O VisualStateManager também permite que você especifique quando um controle entra em um estado específico.The VisualStateManager also enables you to specify when a control enters a specific state. O método que você deve chamar para os Estados de alteração depende do seu cenário.The method that you should call to change states depends on your scenario. Se você criar um controle que usa o VisualStateManager em seu ControlTemplate , chame o GoToState método.If you create a control that uses the VisualStateManager in its ControlTemplate, call the GoToState method. Para obter mais informações sobre como criar controles que usam o VisualStateManager , consulte criando um controle que tem uma aparência personalizável.For more information about how to create controls that use the VisualStateManager, see Creating a Control That Has a Customizable Appearance. Se você usar o VisualStateManager fora de um ControlTemplate (por exemplo, se usar um VisualStateManager em um UserControl ou em um único elemento), chame o GoToElementState método.If you use the VisualStateManager outside of a ControlTemplate (for example, if you use a VisualStateManager in a UserControl or in a single element), call the GoToElementState method. Em ambos os casos, o VisualStateManager executa a lógica necessária para iniciar e parar adequadamente os storyboards associados ao estado envolvido.In either case, the VisualStateManager performs the logic that is required to appropriately start and stop the storyboards that are associated with the involved state. Por exemplo, suponha que um controle defina os Estados State1 e State2 , cada um deles com um storyboard associado a ele.For example, suppose that a control defines the states, State1 and State2, each of which has a storyboard associated with it. Se o controle estiver em State1 e você passar State2 para GoToState ou GoToElementState , o VisualStateManager iniciará o storyboard no State2 e interromperá o storyboard em State1 .If the control is in State1 and you pass State2 to GoToState or GoToElementState, the VisualStateManager starts the storyboard in State2 and stops the storyboard in State1.

Controles que são incluídos com Windows Presentation Foundation (WPF) usam o VisualStateManager para alterar os Estados visuais.Controls that are included with Windows Presentation Foundation (WPF) use the VisualStateManager to change visual states. Quando você cria um ControlTemplate para um controle incluído no WPF, você pode adicionar VisualState objetos ao controle ControlTemplate para especificar a aparência do controle em um determinado estado.When you create a ControlTemplate for a control that is included with WPF, you can add VisualState objects to the control's ControlTemplate to specify the control's appearance in a certain state. Para localizar os nomes dos Estados visuais dos controles incluídos no WPF, consulte controlar estilos e modelos.To find the names of the visual states for the controls that are included with WPF, see Control Styles and Templates. A lógica do controle manipula a transição entre Estados, portanto, você não precisa fazer nada além de definir os VisualState objetos no novo ControlTemplate .The control's logic handles transitioning between states, so you do not need to do anything other than define the VisualState objects in the new ControlTemplate. Para obter mais informações sobre como criar modelos de controle para controles existentes, consulte Personalizando a aparência de um controle existente criando um ControlTemplate.For more information about how to create control templates for existing controls, see Customizing the Appearance of an Existing Control by Creating a ControlTemplate.

Se você quiser implementar sua própria lógica para fazer a transição entre Estados, deverá herdar de VisualStateManager , substituir o GoToStateCore método e definir a VisualStateManager.CustomVisualStateManager Propriedade anexada no controle que usa a lógica personalizada.If you want to implement your own logic for transitioning between states, you must inherit from VisualStateManager, override the GoToStateCore method, and set the VisualStateManager.CustomVisualStateManager attached property on the control that uses the custom logic.

Construtores

VisualStateManager()

Inicializa uma nova instância da classe VisualStateManager.Initializes a new instance of the VisualStateManager class.

Campos

CustomVisualStateManagerProperty

Identifica a propriedade de dependência CustomVisualStateManager.Identifies the CustomVisualStateManager dependency property.

VisualStateGroupsProperty

Identifica a propriedade de dependência VisualStateGroups.Identifies the VisualStateGroups dependency property.

Propriedades

DependencyObjectType

Obtém o DependencyObjectType que encapsula o tipo CLR dessa instância.Gets the DependencyObjectType that wraps the CLR type of this instance.

(Herdado de DependencyObject)
Dispatcher

Obtém o Dispatcher ao qual este DispatcherObject está associado.Gets the Dispatcher this DispatcherObject is associated with.

(Herdado de DispatcherObject)
IsSealed

Obtém um valor que indica se essa instância está validada no momento (somente leitura).Gets a value that indicates whether this instance is currently sealed (read-only).

(Herdado de DependencyObject)

Propriedades Anexadas

CustomVisualStateManager

Obtém ou define o objeto VisualStateManager que faz a transição entre os estados de um controle.Gets or sets the VisualStateManager object that transitions between the states of a control.

VisualStateGroups

Obtém ou define uma coleção de objetos VisualStateGroup.Gets or sets a collection of VisualStateGroup objects.

Métodos

CheckAccess()

Determina se o thread de chamada tem acesso a este DispatcherObject.Determines whether the calling thread has access to this DispatcherObject.

(Herdado de DispatcherObject)
ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade.Clears the local value of a property. A propriedade a ser limpa é especificada por um identificador DependencyProperty.The property to be cleared is specified by a DependencyProperty identifier.

(Herdado de DependencyObject)
ClearValue(DependencyPropertyKey)

Limpa o valor local de uma propriedade somente leitura.Clears the local value of a read-only property. A propriedade a ser limpa é especificada por um DependencyPropertyKey.The property to be cleared is specified by a DependencyPropertyKey.

(Herdado de DependencyObject)
CoerceValue(DependencyProperty)

Converte o valor da propriedade de dependência especificada.Coerces the value of the specified dependency property. Isso é feito invocando qualquer função CoerceValueCallback especificada nos metadados de propriedade para a propriedade de dependência, visto que ela existe na chamada a DependencyObject.This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject.

(Herdado de DependencyObject)
Equals(Object)

Determina se um DependencyObject fornecido é equivalente ao DependencyObject atual.Determines whether a provided DependencyObject is equivalent to the current DependencyObject.

(Herdado de DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Obtém a propriedade anexada CustomVisualStateManager.Gets the CustomVisualStateManager attached property.

GetHashCode()

Obtém o código hash para esse DependencyObject.Gets a hash code for this DependencyObject.

(Herdado de DependencyObject)
GetLocalValueEnumerator()

Cria um enumerador especializado para determinar quais propriedades de dependência têm valores definidos localmente nessa DependencyObject.Creates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject.

(Herdado de DependencyObject)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência nessa instância de um DependencyObject.Returns the current effective value of a dependency property on this instance of a DependencyObject.

(Herdado de DependencyObject)
GetVisualStateGroups(FrameworkElement)

Obtém a propriedade anexada VisualStateGroups.Gets the VisualStateGroups attached property.

GoToElementState(FrameworkElement, String, Boolean)

Faz a transição do elemento entre dois estados.Transitions the element between two states. Use esse método para fazer a transição de estados que são definidos por um aplicativo, em vez de definidos por um controle.Use this method to transition states that are defined by an application, rather than defined by a control.

GoToState(FrameworkElement, String, Boolean)

Faz a transição do controle entre dois estados.Transitions the control between two states. Use este método para estados de transição no controle que tem um ControlTemplate.Use this method to transition states on control that has a ControlTemplate.

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

Faz a transição de um controle entre estados.Transitions a control between states.

InvalidateProperty(DependencyProperty)

Reavalia o valor efetivo para a propriedade de dependência especificada.Re-evaluates the effective value for the specified dependency property.

(Herdado de DependencyObject)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Invocado sempre que o valor efetivo de qualquer propriedade de dependência nesse DependencyObject for atualizado.Invoked whenever the effective value of any dependency property on this DependencyObject has been updated. A propriedade de dependência específica que mudou é relatada os dados do evento.The specific dependency property that changed is reported in the event data.

(Herdado de DependencyObject)
RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement)

Gera o evento CurrentStateChanging no objeto VisualStateGroup especificado.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

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

Gera o evento CurrentStateChanging no objeto VisualStateGroup especificado.Raises the CurrentStateChanging event on the specified VisualStateGroup object.

ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, local, se houver.Returns the local value of a dependency property, if it exists.

(Herdado de DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Define o valor da propriedade de dependência sem alterar a origem do valor.Sets the value of a dependency property without changing its value source.

(Herdado de DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Define a propriedade anexada CustomVisualStateManager.Sets the CustomVisualStateManager attached property.

SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência, especificada pelo identificador da propriedade de dependência.Sets the local value of a dependency property, specified by its dependency property identifier.

(Herdado de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Define o valor de uma propriedade de dependência somente leitura, especificada pelo identificador DependencyPropertyKey da propriedade de dependência.Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property.

(Herdado de DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Retorna um valor que indica se os processos de serialização devem serializar o valor da propriedade de dependência fornecida.Returns a value that indicates whether serialization processes should serialize the value for the provided dependency property.

(Herdado de DependencyObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)
VerifyAccess()

Impõe que o thread de chamada tenha acesso a este DispatcherObject.Enforces that the calling thread has access to this DispatcherObject.

(Herdado de DispatcherObject)

Aplica-se a