哪些可能的VisualStates for Windows 8 Metro控件记录在哪里?

Skr*_*sli 7 xaml windows-8 windows-runtime winrt-xaml

在为Win 8 Metro控件编写自定义ControlTemplate(XAML)时,我们需要使用VisualStateManager根据VisualState转换更新控件.我在MSDN上看到了下面的示例,但是我找不到VisualStateGroup"CommonStates"的记录位置以及除"PointerOver"和"Normal"之外定义的其他VisualStates?您是否需要深入了解SDK以找到按钮的默认ControlTemplate?如果是的话,在哪里?

<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>
Run Code Online (Sandbox Code Playgroud)

Fil*_*kun 7

您可以转到xaml文件的设计视图,并选择Button控件 - 右键单击​​/编辑模板/编辑当前 - 将获取提取的默认模板.通常控件应该使用属性来注释,这些属性指示应该在模板中使用哪些视觉状态,如下所示,但是当我导航到像Button这样的控件的定义时,我看不到它们.

[TemplateVisualState(GroupName="CommonStates", Name="Normal")]
[TemplateVisualState(GroupName="CommonStates", Name="PointerOver")]
Run Code Online (Sandbox Code Playgroud)