2012-05-03 9 views
7

Al escribir una ControlTemplate personalizada (XAML) para un control Win 8 Metro, necesitamos usar VisualStateManager para actualizar el control de acuerdo con las transiciones de VisualState. Veo la muestra a continuación en MSDN, pero no puedo encontrar dónde se documenta el "CommonStates" de VisualStateGroup y qué otros VisualStates se definen aparte de "PointerOver" y "Normal". ¿Tienes que ir a cavar en el SDK para encontrar el ControlTemplate predeterminado para un botón? ¿Si es así, donde?¿Dónde se documentan los posibles controles VisualStates para Windows 8 Metro?

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

     <VisualStateGroup.Transitions> 

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

     <VisualState x:Name="Normal" /> 

     <!--Change the SolidColorBrush, ButtonBrush, to red when the 
      Pointer is over the button.--> 
     <VisualState x:Name="PointerOver"> 
      <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> 
+0

Ver también: http://stackoverflow.com/questions/10861160/control-styles-and-templates-for-windows-8-metro-ui –

Respuesta

7

Usted puede ir a la vista de diseño de su archivo XAML y con el control de botón seleccionado - hacer clic derecho/Editar plantilla/Editar actual - le conseguirá la plantilla por defecto extraído. Normalmente, los controles se deben anotar con atributos que indiquen qué estados visuales se deben usar en la plantilla, como se muestra a continuación, pero no puedo verlos cuando navego hacia la definición de un control como Botón.

[TemplateVisualState(GroupName="CommonStates", Name="Normal")] 
[TemplateVisualState(GroupName="CommonStates", Name="PointerOver")] 
Cuestiones relacionadas