2012-05-03 19 views
7

Podczas pisania niestandardowego ControlTemplate (XAML) dla kontrolki Win 8 Metro, należy użyć VisualStateManager, aby zaktualizować sterowanie zgodnie z przejściami VisualState. Widzę poniższy przykład na całym MSDN, ale nie mogę znaleźć miejsca, gdzie VisualStateGroup "CommonStates" jest udokumentowane i jakie inne VisualStates są zdefiniowane inne niż "PointerOver" i "Normal"? Czy musisz zagłębić się w SDK, aby znaleźć domyślny ControlTemplate dla przycisku? Jeśli tak, to gdzie?Gdzie są udokumentowane możliwe kontrolki VisualStates dla 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

Zobacz także: http://stackoverflow.com/questions/10861160/control-styles-and-templates-for-windows-8-metro-ui –

Odpowiedz

7

można przejść do widoku projektu swojego pliku XAML iz kontrolą wybrany przycisk - kliknij prawym przyciskiem myszy/Edit template/Edytuj bieżące - będzie Ci domyślnego szablonu wyodrębnione. Zwykle kontrole powinny być opatrzone adnotacjami z atrybutami, które wskazują, które stany wizualne powinny być używane w szablonie, jak poniżej, ale nie widzę ich, kiedy po prostu poruszam się po definicji kontrolki takiej jak Button.

[TemplateVisualState(GroupName="CommonStates", Name="Normal")] 
[TemplateVisualState(GroupName="CommonStates", Name="PointerOver")] 
Powiązane problemy