VisualStateManager.VisualStateGroups Propriedade anexada

Definição

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

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Exemplos

O exemplo a seguir cria um simples ControlTemplate para um que contém um ButtonGrid. Ele também contém um VisualStateGroup nome CommonStates, que define o e MouseOver os Normal estados. O VisualStateGroup também tem um VisualTransition que especifica que leva meio segundo para a Grid alteração de verde para vermelho quando o usuário move o ponteiro do mouse 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>

Comentários

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

Você adiciona VisualState a um controle definindo a VisualStateGroups propriedade anexada no controle. Você coloca estados que são mutuamente exclusivos uns com os outros no mesmo VisualStateGroup. Por exemplo, o CheckBox tem dois VisualStateGroup objetos. Um contém os estados, Normal, MouseOvere PressedDisabled. O outro contém os estados, Checkede UnCheckedIndeterminate. Pode CheckBox estar em estados MouseOver e UnChecked ao mesmo tempo, mas não pode ser no MouseOver estado e Pressed ao mesmo tempo.

Embora você possa adicionar VisualState objetos a qualquer elemento, eles são uma maneira particularmente útil de permitir que outras pessoas redefinam o comportamento visual de um Control. Se você criar um controle personalizado que usa um ControlTemplate, poderá especificar em quais estados esse controle pode estar adicionando uma TemplateVisualStateAttribute definição de classe. Em seguida, qualquer pessoa que cria um novo ControlTemplate para o controle pode adicionar VisualState objetos ao modelo. Estados com o mesmo System.Windows.TemplateVisualStateAttribute.GroupName pertencem ao mesmo VisualStateGroup.

Para obter mais informações sobre como usar VisualStateGroup objetos em um ControlTemplate, consulte Como criar um modelo para um controle. Para obter mais informações sobre como criar controles que usam o VisualStateManager, consulte Criando um controle que tem uma aparência personalizável.

Aplica-se a