VisualStateManager.VisualStateGroups Propriedade Anexada

Definição

Recebe ou define uma coleção de VisualStateGroup objetos.

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Exemplos

O exemplo seguinte cria um simples ControlTemplate para um Button que contém um Grid. Contém também um VisualStateGroup nome CommonStates, que define os MouseOver estados e Normal . O VisualStateGroup também tem um VisualTransition que especifica que demora meio segundo para mudar Grid de verde para vermelho quando o utilizador move o ponteiro do rato sobre o Button.

<ControlTemplate TargetType="Button">
  <Grid >
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">

        <VisualStateGroup.Transitions>

          <!--Take one half second to trasition to the MouseOver state.-->
          <VisualTransition To="MouseOver" 
            GeneratedDuration="0:0:0.5"/>
        </VisualStateGroup.Transitions>

        <VisualState x:Name="Normal" />

        <!--Change the SolidColorBrush, ButtonBrush, to red when the
            mouse is over the button.-->
        <VisualState x:Name="MouseOver">
          <Storyboard>
            <ColorAnimation Storyboard.TargetName="ButtonBrush" 
              Storyboard.TargetProperty="Color" To="Red" />
          </Storyboard>
        </VisualState>
      </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Grid.Background>
      <SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
    </Grid.Background>
  </Grid>
</ControlTemplate>

Observações

Cada um VisualStateGroup contém uma coleção de VisualState objetos. A contém uma coleção de Storyboard objetos que especificam como a aparência do controlo VisualState muda quando este está num determinado 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").

Adiciona-se VisualState a um controlo definindo a VisualStateGroups propriedade associada no controlo. Colocas estados que são mutuamente exclusivos entre si no mesmo VisualStateGrouplugar. Por exemplo, o CheckBox tem dois VisualStateGroup objetos. Um contém os estados, Normal, MouseOver, Pressed, e Disabled. O outro contém os estados, Checked, UnChecked, e Indeterminate. Podem CheckBox estar nos estados MouseOver e UnChecked ao mesmo tempo, mas não podem estar nos MouseOver estados e Pressed ao mesmo tempo.

Embora possas adicionar VisualState objetos a qualquer elemento, são uma forma particularmente útil de permitir que outros redefinam o comportamento visual de um Control. Se criares um controlo personalizado que use um ControlTemplate, podes especificar em que estados esse controlo pode estar, adicionando a TemplateVisualStateAttribute à definição de classe dele. Depois, qualquer pessoa que crie um novo ControlTemplate para o teu controlo pode adicionar VisualState objetos ao template. Estados com o mesmo System.Windows.TemplateVisualStateAttribute.GroupName pertencem ao mesmo VisualStateGroup.

Para mais informações sobre como usar VisualStateGroup objetos num ControlTemplate, veja Como criar um modelo para um controlo. Para mais informações sobre como criar controlos que utilizam o VisualStateManager, veja Criar um Controlo que Tem uma Aparência Personalizável.

Aplica-se a