VisualStateManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Gere estados e a lógica para a transição entre estados para controlos.
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 seguinte cria um Rectangle e adiciona um VisualStateGroup nome CommonStates à VisualStateManager.VisualStatesGroups propriedade anexada. O exemplo define os MouseOver objetos e NormalVisualState em .CommonStatesVisualStateGroup Quando o utilizador move o ponteiro do rato sobre o Rectangle, ele muda de vermelho para verde ao longo de meio segundo. Quando o utilizador afasta o rato do retângulo, este Grid volta imediatamente ao vermelho. Note-se que o Normal estado não define um Storyboard. A Storyboard não é obrigató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 volta a 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 seguinte mostra o handler de eventos definido no exemplo anterior e chama o GoToElementState método para a transição entre estados. Se o retângulo no exemplo anterior fizesse parte de um ControlTemplate, o exemplo teria de 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
Observações
Permite-lhe VisualStateManager especificar estados para um controlo, a aparência de um controlo quando está num determinado estado e quando um controlo muda de estado. Por exemplo, a Button pode ter uma aparência ligeiramente diferente quando é pressionada do que quando não é pressionada. Dois estados que os Button defines correspondem a quando é pressionado ("Pressed") e quando não é pressionado ("Normal"). A aparência de um controlo quando está num estado é definida por um VisualState. A contém uma coleção de Storyboard objetos que especificam como a aparência do controlo VisualState muda quando o controlo está nesse estado. Adiciona-se estados visuais a um controlo ao definir a VisualStateManager.VisualStateGroups propriedade associada no controlo. Cada um VisualStateGroup contém uma coleção de VisualState objetos mutuamente exclusivos. Ou seja, o controlo está sempre exatamente num estado de em cada VisualStateGroup.
Também VisualStateManager permite especificar quando um controlo entra num estado específico. A forma como deve ligar para mudar de estado depende do seu caso. Se criares um controlo que use o VisualStateManager em seu ControlTemplate, chama o GoToState método. Para mais informações sobre como criar controlos que utilizam o VisualStateManager, veja Criar um Controlo que Tem uma Aparência Personalizável. Se usares o VisualStateManager exterior de a ControlTemplate (por exemplo, se usares a VisualStateManager em a UserControl ou num único elemento), chama o GoToElementState método. Em qualquer dos casos, executa VisualStateManager a lógica necessária para iniciar e terminar adequadamente os storyboards associados ao estado envolvido. Por exemplo, suponha que um controlo define os estados, State1 e State2, cada um dos quais tem um storyboard associado. Se o controlo estiver inserido State1 e passar State2 para GoToState ou GoToElementState, o VisualStateManager storyboard começa em State2 e para o storyboard em State1.
Os controlos incluídos com Windows Presentation Foundation (WPF) usam o VisualStateManager para alterar estados visuais. Quando crias um ControlTemplate para um controlo incluído com WPF, podes adicionar objetos VisualState ao ControlTemplate do controlo para especificar a aparência do controlo num determinado estado. Para encontrar os nomes dos estados visuais dos controlos incluídos com WPF, veja Estilos e Modelos de Controlo. A lógica do controlo trata da transição entre estados, por isso não precisa de fazer nada além de definir os VisualState objetos no novo ControlTemplate. Para mais informações sobre como criar modelos de controlo para controlos existentes, consulte Como criar um modelo para um controlo.
Se quiseres implementar a tua própria lógica para transição entre estados, tens de herdar de VisualStateManager, sobrescrever o GoToStateCore método e definir a VisualStateManager.CustomVisualStateManager propriedade anexada no controlo que usa a lógica personalizada.
Construtores
| Name | Description |
|---|---|
| VisualStateManager() |
Inicializa uma nova instância da VisualStateManager classe. |
Campos
| Name | Description |
|---|---|
| CustomVisualStateManagerProperty |
Identifica a CustomVisualStateManager propriedade de dependência. |
| VisualStateGroupsProperty |
Identifica a VisualStateGroups propriedade de dependência. |
Propriedades
| Name | Description |
|---|---|
| DependencyObjectType |
Obtém o DependencyObjectType que envolve o tipo CLR desta instância. (Herdado de DependencyObject) |
| Dispatcher |
Percebe o Dispatcher que isto DispatcherObject está associado. (Herdado de DispatcherObject) |
| IsSealed |
Recebe um valor que indica se esta instância está atualmente selada (apenas leitura). (Herdado de DependencyObject) |
Propriedades Anexadas
| Name | Description |
|---|---|
| CustomVisualStateManager |
Obtém ou define o VisualStateManager objeto que transita entre os estados de um controlo. |
| VisualStateGroups |
Recebe ou define uma coleção de VisualStateGroup objetos. |
Métodos
| Name | Description |
|---|---|
| CheckAccess() |
Determina se o thread que chama 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 DependencyProperty identificador. (Herdado de DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Limpa o valor local de uma propriedade de apenas leitura. O imóvel a ser limpo é especificado por um DependencyPropertyKey. (Herdado de DependencyObject) |
| CoerceValue(DependencyProperty) |
Coage o valor da propriedade de dependência especificada. Isto é conseguido invocando qualquer CoerceValueCallback função especificada nos metadados da propriedade para a propriedade de dependência tal como existe na chamada DependencyObject. (Herdado de DependencyObject) |
| Equals(Object) |
Determina se um fornecido DependencyObject é equivalente à corrente DependencyObject. (Herdado de DependencyObject) |
| GetCustomVisualStateManager(FrameworkElement) |
Fica com a CustomVisualStateManager propriedade anexa. |
| GetHashCode() |
Obtém um código de hash para isto DependencyObject. (Herdado de DependencyObject) |
| GetLocalValueEnumerator() |
Cria um enumerador especializado para determinar quais as propriedades de dependência que têm valores localmente definidos neste DependencyObject. (Herdado de DependencyObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetValue(DependencyProperty) |
Devolve o valor efetivo atual de uma propriedade de dependência nesta instância de um DependencyObject. (Herdado de DependencyObject) |
| GetVisualStateGroups(FrameworkElement) |
Fica com a VisualStateGroups propriedade anexa. |
| GoToElementState(FrameworkElement, String, Boolean) |
Faz transições do elemento entre dois estados. Use este método para transição de estados definidos por uma aplicação, em vez de definidos por um controlo. |
| GoToState(FrameworkElement, String, Boolean) |
Transita o controlo entre dois estados. Use este método para transicionar estados no controlo que tenha um ControlTemplate. |
| GoToStateCore(FrameworkElement, FrameworkElement, String, VisualStateGroup, VisualState, Boolean) |
Transições e controlo entre estados. |
| InvalidateProperty(DependencyProperty) |
Reavalia o valor efetivo da propriedade de dependência especificada. (Herdado de DependencyObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Invocado sempre que o valor efetivo de qualquer propriedade de dependência disto DependencyObject for atualizado. A propriedade específica da dependência que mudou é reportada nos dados do evento. (Herdado de DependencyObject) |
| RaiseCurrentStateChanged(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Eleva o CurrentStateChanging evento no objeto especificado VisualStateGroup . |
| RaiseCurrentStateChanging(VisualStateGroup, VisualState, VisualState, FrameworkElement, FrameworkElement) |
Eleva o CurrentStateChanging evento no objeto especificado VisualStateGroup . |
| ReadLocalValue(DependencyProperty) |
Devolve o valor local de uma propriedade de dependência, se esta existir. (Herdado de DependencyObject) |
| SetCurrentValue(DependencyProperty, Object) |
Define o valor de uma propriedade de dependência sem alterar a sua fonte de valor. (Herdado de DependencyObject) |
| SetCustomVisualStateManager(FrameworkElement, VisualStateManager) |
Define a CustomVisualStateManager propriedade anexa. |
| SetValue(DependencyProperty, Object) |
Define o valor local de uma propriedade de dependência, especificado pelo seu identificador de propriedade de dependência. (Herdado de DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Define o valor local de uma propriedade de dependência somente de leitura, especificado pelo DependencyPropertyKey identificador da propriedade de dependência. (Herdado de DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Devolve um valor que indica se os processos de serialização devem serializar o valor da propriedade de dependência fornecida. (Herdado de DependencyObject) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| VerifyAccess() |
Faz cumprir que o thread que chama tem acesso a este DispatcherObject. (Herdado de DispatcherObject) |