VisualStateManager Classe

Definição

Gerencia os estados e a lógica para fazer a transição entre estados para controles.

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 chamado CommonStates à VisualStateManager.VisualStatesGroups propriedade anexada. O exemplo define os MouseOver objetos e NormalVisualState no CommonStatesVisualStateGroup. Quando o usuário move o ponteiro do mouse sobre o Rectangle, ele muda de vermelho para verde durante meio segundo. Quando o usuário move o mouse para longe do retângulo, o Grid muda imediatamente de volta para vermelho. Observe que o Normal estado não define um Storyboard. Um Storyboard não é necessário porque quando o faz a Rectangle transição do MouseOver estado para o Normal estado, o Storyboard para MouseOver é interrompido e a Color propriedade para o SolidColorBrush retorna para vermelho.

<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 definido no exemplo anterior e chama o GoToElementState método para fazer a transição entre estados. Se o retângulo no exemplo anterior fosse parte de um ControlTemplate, o exemplo teria que chamar o GoToState método .

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 muda de estado. Por exemplo, um Button pode ter uma aparência um pouco diferente quando é pressionado do que quando não é pressionado. Dois estados que o Button define correspondem a quando é pressionado ("Pressed") e quando não é ("Normal"). A aparência de um controle quando ele está em um estado é definido por um 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. Adicione estados visuais a um controle definindo a VisualStateManager.VisualStateGroups propriedade anexada no controle . Cada VisualStateGroup contém uma coleção de VisualState objetos mutuamente exclusivos. Ou seja, o controle está sempre em exatamente um estado de em cada VisualStateGroup.

O VisualStateManager também permite que você especifique quando um controle entra em um estado específico. O método que você deve chamar para alterar estados depende do cenário. Se você criar um controle que usa o VisualStateManager em seu ControlTemplate, chame o GoToState método . Para obter mais informações sobre como criar controles que usam o VisualStateManager, consulte Criando um controle que tem uma aparência personalizável. Se você usar o VisualStateManager fora de um ControlTemplate (por exemplo, se você usar um VisualStateManager em um UserControl ou em um único elemento), chame o GoToElementState método . Em ambos os casos, o VisualStateManager executa a lógica necessária para iniciar e parar adequadamente os storyboards associados ao estado envolvido. Por exemplo, suponha que um controle defina os estados State1 e State2, cada um deles tem um storyboard associado a ele. Se o controle estiver em State1 e você passar State2 para GoToState ou GoToElementState, o VisualStateManager iniciará o storyboard em State2 e interromperá o storyboard em State1.

Os controles incluídos no WPF (Windows Presentation Foundation) usam o para alterar os VisualStateManager estados visuais. Ao criar um ControlTemplate para um controle incluído no WPF, você pode adicionar VisualState objetos ao do ControlTemplate controle para especificar a aparência do controle em um determinado estado. Para localizar os nomes dos estados visuais para os controles incluídos no WPF, consulte Estilos de controle e modelos. 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. 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.

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.

Construtores

VisualStateManager()

Inicializa uma nova instância da classe VisualStateManager.

Campos

CustomVisualStateManagerProperty

Identifica a propriedade de dependência CustomVisualStateManager.

VisualStateGroupsProperty

Identifica a propriedade de dependência VisualStateGroups.

Propriedades

DependencyObjectType

Obtém o DependencyObjectType que encapsula o tipo CLR dessa instância.

(Herdado de DependencyObject)
Dispatcher

Obtém o Dispatcher ao qual este DispatcherObject está associado.

(Herdado de DispatcherObject)
IsSealed

Obtém um valor que indica se essa instância está validada no momento (somente leitura).

(Herdado de DependencyObject)

Propriedades Anexadas

CustomVisualStateManager

Obtém ou define o objeto VisualStateManager que faz a transição entre os estados de um controle.

VisualStateGroups

Obtém ou define uma coleção de objetos VisualStateGroup.

Métodos

CheckAccess()

Determina se o thread de chamada tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade. A propriedade a ser limpa é especificada por um identificador DependencyProperty.

(Herdado de DependencyObject)
ClearValue(DependencyPropertyKey)

Limpa o valor local de uma propriedade somente leitura. A propriedade a ser limpa é especificada por um DependencyPropertyKey.

(Herdado de DependencyObject)
CoerceValue(DependencyProperty)

Converte o valor da propriedade de dependência especificada. 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.

(Herdado de DependencyObject)
Equals(Object)

Determina se um DependencyObject fornecido é equivalente ao DependencyObject atual.

(Herdado de DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Obtém a propriedade anexada CustomVisualStateManager.

GetHashCode()

Obtém o código hash para esse DependencyObject.

(Herdado de DependencyObject)
GetLocalValueEnumerator()

Cria um enumerador especializado para determinar quais propriedades de dependência têm valores definidos localmente nessa DependencyObject.

(Herdado de DependencyObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência nessa instância de um DependencyObject.

(Herdado de DependencyObject)
GetVisualStateGroups(FrameworkElement)

Obtém a propriedade anexada VisualStateGroups.

GoToElementState(FrameworkElement, String, Boolean)

Faz a transição do elemento entre dois estados. 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.

GoToState(FrameworkElement, String, Boolean)

Faz a transição do controle entre dois estados. Use este método para estados de transição no controle que tem um ControlTemplate.

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

Faz a transição de um controle entre estados.

InvalidateProperty(DependencyProperty)

Reavalia o valor efetivo para a propriedade de dependência especificada.

(Herdado de DependencyObject)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Invocado sempre que o valor efetivo de qualquer propriedade de dependência nesse DependencyObject for atualizado. A propriedade de dependência específica que mudou é relatada os dados do evento.

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

Gera o evento CurrentStateChanging no objeto VisualStateGroup especificado.

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

Gera o evento CurrentStateChanging no objeto VisualStateGroup especificado.

ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, local, se houver.

(Herdado de DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Define o valor da propriedade de dependência sem alterar a origem do valor.

(Herdado de DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Define a propriedade anexada CustomVisualStateManager.

SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência, especificada pelo identificador da propriedade de dependência.

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

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

(Herdado de DependencyObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
VerifyAccess()

Impõe que o thread de chamada tenha acesso a este DispatcherObject.

(Herdado de DispatcherObject)

Aplica-se a