Partilhar via


VisualStateManager Classe

Definição

Gerencia estados e a lógica de 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 nome e adiciona um VisualStateGroup nome CommonStates à VisualStateManager.VisualStatesGroups propriedade anexada. O exemplo define os objetos e Normalos objetos noVisualStateGroupCommonStates .MouseOverVisualState Quando o usuário move o ponteiro do mouse sobre o Rectangle, ele muda de vermelho para verde em mais de meio segundo. Quando o usuário move o mouse para longe do retângulo, as Grid alterações imediatamente voltam para vermelho. Observe que o Normal estado não define um Storyboard. Um Storyboard não é necessário porque quando a Rectangle transição do MouseOver estado para o Normal estado, o Storyboard for MouseOver é interrompido e a Color propriedade para o SolidColorBrush retorno 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

Permite VisualStateManager 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 ligeiramente diferente quando é pressionado do que quando não é pressionado. Dois estados aos quais as Button definições correspondem quando ela é pressionada ("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 um contém uma coleção de VisualState objetos que são mutuamente exclusivos. Ou seja, o controle está sempre em exatamente um estado de 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 seu cenário. Se você criar um controle que usa o VisualStateManager método 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 exterior 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, executa a VisualStateManager lógica necessária para iniciar e parar adequadamente os storyboards associados ao estado envolvido. Por exemplo, suponha que um controle defina os estados eState2, State1 cada um deles, tenha um storyboard associado a ele. Se o controle estiver dentro State1 e você passar State2 para GoToState ou GoToElementState, o VisualStateManager storyboard State2 iniciará e interromperá o storyboard em State1.

Os controles incluídos no WPF (Windows Presentation Foundation) usam os VisualStateManager estados visuais para alterar. Quando você cria um ControlTemplate controle que está incluído no WPF, você pode adicionar VisualState objetos aos controles ControlTemplate 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 Como criar um modelo para um controle.

Se você quiser implementar sua própria lógica para a transição entre estados, você deverá herdar VisualStateManager, substituir o GoToStateCore método e definir a VisualStateManager.CustomVisualStateManager propriedade anexada no controle que usa a lógica personalizada.

Construtores

Nome Description
VisualStateManager()

Inicializa uma nova instância da classe VisualStateManager.

Campos

Nome Description
CustomVisualStateManagerProperty

Identifica a CustomVisualStateManager propriedade de dependência.

VisualStateGroupsProperty

Identifica a VisualStateGroups propriedade de dependência.

Propriedades

Nome Description
DependencyObjectType

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

(Herdado de DependencyObject)
Dispatcher

Obtém o Dispatcher que DispatcherObject está associado.

(Herdado de DispatcherObject)
IsSealed

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

(Herdado de DependencyObject)

Propriedades Anexadas

Nome Description
CustomVisualStateManager

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

VisualStateGroups

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

Métodos

Nome Description
CheckAccess()

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

(Herdado de DispatcherObject)
ClearValue(DependencyProperty)

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

(Herdado de DependencyObject)
ClearValue(DependencyPropertyKey)

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

(Herdado de DependencyObject)
CoerceValue(DependencyProperty)

Coagi o valor da propriedade de dependência especificada. Isso é feito invocando qualquer CoerceValueCallback função especificada nos metadados de propriedade para a propriedade de dependência como ela existe na chamada DependencyObject.

(Herdado de DependencyObject)
Equals(Object)

Determina se um fornecido DependencyObject é equivalente ao atual DependencyObject.

(Herdado de DependencyObject)
GetCustomVisualStateManager(FrameworkElement)

Obtém a CustomVisualStateManager propriedade anexada.

GetHashCode()

Obtém um código hash para isso DependencyObject.

(Herdado de DependencyObject)
GetLocalValueEnumerator()

Cria um enumerador especializado para determinar quais propriedades de dependência têm valores definidos localmente.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 nesta instância de um DependencyObject.

(Herdado de DependencyObject)
GetVisualStateGroups(FrameworkElement)

Obtém a VisualStateGroups propriedade anexada.

GoToElementState(FrameworkElement, String, Boolean)

Faz a transição do elemento entre dois estados. Use esse método para fazer a transição de estados 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 esse método para fazer a transição de estados 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 da propriedade de dependência especificada.

(Herdado de DependencyObject)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Invocado sempre que o valor efetivo de qualquer propriedade de dependência tiver DependencyObject sido atualizado. A propriedade de dependência específica que foi alterada é relatada nos dados do evento.

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

Gera o CurrentStateChanging evento no objeto especificado VisualStateGroup .

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

Gera o CurrentStateChanging evento no objeto especificado VisualStateGroup .

ReadLocalValue(DependencyProperty)

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

(Herdado de DependencyObject)
SetCurrentValue(DependencyProperty, Object)

Define o valor de uma propriedade de dependência sem alterar sua fonte de valor.

(Herdado de DependencyObject)
SetCustomVisualStateManager(FrameworkElement, VisualStateManager)

Define a CustomVisualStateManager propriedade anexada.

SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência, especificada por seu identificador de propriedade de dependência.

(Herdado de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Define o valor local de uma propriedade de dependência somente leitura, especificada pelo DependencyPropertyKey identificador 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 isso DispatcherObject.

(Herdado de DispatcherObject)

Aplica-se a