2011-12-07 65 views
1

我有一個ListBoxItem樣式,我正在創建模仿在您點擊市場應用程序中的應用程序時發生的'失望和離開'樣式。製作ListBoxItem已選定動畫完成前導航

如果我不處理SelectionChanged事件,它的工作原理確定(不匹配完美,但嘿:P),但是當我處理SelectionChanged,頁面只是瞬間的動畫完成之前導航。

理想情況下,我有興趣學習如何處理在導航到通用頁面之前完成動畫的完成。我知道我大概可以用一個DispatcherTimer等待,但我更願意做這樣的事情:

if (selected item has storyboard, and storyboard is going) 
    when finished, navigate to page2. 


<Style x:Key="StretchedListBoxStyle" TargetType="ListBoxItem"> 

     <Setter Property="Background" Value="Transparent" /> 
     <Setter Property="BorderThickness" Value="0" /> 
     <Setter Property="BorderBrush" Value="Transparent" /> 
     <Setter Property="Padding" Value="0" /> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     <Setter Property="VerticalContentAlignment" Value="Top" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border x:Name="LayoutRoot" 
          HorizontalAlignment="{TemplateBinding HorizontalAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalAlignment}" 
          Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}"> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Normal" /> 
           <VisualState x:Name="MouseOver" /> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Background"> 
              <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TransparentBrush}" /> 
             </ObjectAnimationUsingKeyFrames> 
             <DoubleAnimation Duration="0" 
                 Storyboard.TargetName="ContentContainer" 
                 Storyboard.TargetProperty="Opacity" 
                 To=".5" /> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="SelectionStates"> 
           <VisualState x:Name="Unselected" /> 
           <VisualState x:Name="Selected"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentContainer" Storyboard.TargetProperty="(UIElement.Opacity)"> 
              <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="1" /> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentContainer" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"> 
              <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
              <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="900" /> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentContainer" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"> 
              <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
              <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="30" /> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <ContentControl x:Name="ContentContainer" 
             Margin="{TemplateBinding Padding}" 
             VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
             HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
             Content="{TemplateBinding Content}" 
             ContentTemplate="{TemplateBinding ContentTemplate}" 
             Foreground="{TemplateBinding Foreground}" 
             RenderTransformOrigin="0.5,0.5"> 
          <ContentControl.RenderTransform> 
           <CompositeTransform /> 
          </ContentControl.RenderTransform> 
          <ContentControl.Projection> 
           <PlaneProjection /> 
          </ContentControl.Projection> 
         </ContentControl> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

1

我想你所談論的連續動畫,這是不包含在工具包。這個動畫不應該在ListBoxItem風格內發生。

前一段時間我問了this question,我相信任何人都可以給你想要的東西。 :)

+0

真棒,生病檢查出來。謝謝! –