Partilhar via


VisualStateManager.VisualStateGroups Propriedade anexada

Definição

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

see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups

Exemplos

O exemplo a seguir cria um simples ControlTemplate para um que contém um Button Grid. Ele também contém um VisualStateGroup nomeCommonStates, que define o e Normal os MouseOver 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 ele é pressionado do que quando não é pressionado. Dois estados aos quais as Button definições correspondem quando são pressionadas ("Pressed") e quando não são ("Normal").

VisualState Adicione a um controle definindo a VisualStateGroups propriedade anexada no controle. Você coloca estados mutuamente exclusivos uns dos outros no mesmo VisualStateGroup. Por exemplo, o CheckBox tem dois VisualStateGroup objetos. Um contém os estados, Normale Pressed``MouseOver``Disabled. . O outro contém os estados, Checked``UnCheckede Indeterminate. 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 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 Personalizando a aparência de um controle existente criando um ControlTemplate. 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