2014-08-28 46 views

回答

1

有几种可能的方法可以做到这一点,但基本的想法是,您可以将菜单添加到隐藏或折叠状态,然后在Hold事件中触发动画。下面是一个简单的例子(使用交互式DLL System.Windows.Interactivity和Microsoft.Expression.Interactions.Core):

<Grid xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
     xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"> 
    <Grid.Resources> 
     <Storyboard x:Name="ShowMenu"> 
      <DoubleAnimation Storyboard.TargetName="translate" Storyboard.TargetProperty="X" 
          To="0" Duration="0:0:0.3" /> 
     </Storyboard> 
     <Storyboard x:Name="HideMenu"> 
      <DoubleAnimation Storyboard.TargetName="translate" Storyboard.TargetProperty="X" 
          To="-300" Duration="0:0:0.3" /> 
     </Storyboard> 
    </Grid.Resources> 

    <Grid Width="300" Background="LightBlue"> 
     <Grid.RenderTransform> 
      <TranslateTransform x:Name="translate" X="-300" /> 
     </Grid.RenderTransform> 

     <!-- Menu popup content here --> 
     <TextBlock Text="Menu"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="Hold"> 
        <ei:ControlStoryboardAction Storyboard="{StaticResource HideMenu}" ControlStoryboardOption="Play" /> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
     </TextBlock> 
    </Grid> 

    <Grid> 
     <!-- Item content here --> 
     <TextBlock Text="Item"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="Hold"> 
        <ei:ControlStoryboardAction Storyboard="{StaticResource ShowMenu}" ControlStoryboardOption="Play" /> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
     </TextBlock 
    </Grid> 
</Grid> 
+0

谢谢男人,它似乎工作! – 2014-08-29 12:07:36

1

您可以将此菜单包含在您的Item Template中,并将其Visibility设置为Collapsed。然后将代码添加到将显示它的Hold事件中。看看Storyboard类可能的动画。