2017-08-15 35 views
0

我剛剛與VisualState合作,想知道如何將Storyboard.TargetName設置爲正在設計的控件?VisualState Storyboard.TargetName在UWP

我希望下面的代碼片段能讓我的問題更清楚一點。

<Style x:Key="AppBarBtnStyle" TargetType="AppBarButton"> 

    <Setter Property="BorderBrush" Value="Gray"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="AppBarButton"> 
<Grid x:Name="Root" 
<VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Flash"> 
            <Storyboard> 
             <ColorAnimationUsingKeyFrames Storyboard.TargetName="WHAT GOES HERE TO TARGET THE BORDERBRUSH SET PREVIOUSLY ABOVE" Storyboard.TargetProperty="(BorderBrush).(SolidColorBrush.Color)" Duration="0:0:1"> 

回答

0

如何設置Storyboard.TargetName的控制正在被稱呼?

看起來好像你想動畫<Setter>哪個屬性是BorderBrush。實際上,當使用樣式來定義控件模板時,Style元素的TargetType和Control.Template設置器的ControlTemplate元素的TargetType應始終使用相同的值。詳細信息請參考Setter class的樣式和模板部分。

例如,BorderBrush屬性,您可以在Grid控制其命名RootAppBarButton styles and templates裏面找到它。

<Grid 
    x:Name="Root" 
    MinWidth="{TemplateBinding MinWidth}" 
    MaxWidth="{TemplateBinding MaxWidth}" 
    Background="{TemplateBinding Background}" 
    BorderBrush="{TemplateBinding BorderBrush}" 
    BorderThickness="{TemplateBinding BorderThickness}"> 

所以,你可以通過設置Storyboard.TargetNameRoot元素爲這裏的彩動畫滿足您的requierements。

<VisualState x:Name="Normal"> 
    <Storyboard> 
     <ColorAnimationUsingKeyFrames 
      Storyboard.TargetName="Root" 
      Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" 
      Duration="0:0:5"> 
      <LinearColorKeyFrame KeyTime="00:00:02" Value="Blue" /> 
      <DiscreteColorKeyFrame KeyTime="00:00:2.5" Value="Yellow" /> 
     </ColorAnimationUsingKeyFrames> 
     <PointerUpThemeAnimation Storyboard.TargetName="OverflowTextLabel" /> 
    </Storyboard> 
</VisualState>