2009-12-15 80 views
0

所以我在图像中创建了许多Silverlight按钮。在每种情况下,按钮都具有常规图像和悬停图像。我已经使用Blend让悬停图像在悬停时超过.15秒。Silverlight按钮样式卡在全屏上

问题在于我无法弄清楚如何访问图像,因为它们嵌入在样式中。所以,我对每个按钮都有一个单独的样式,而不是具有两个可互换图像的单个UserControl。

另外我有一组两个按钮:FullScreen和ExitFullScreen。悬停图像卡在这种情况下:

  1. 按全屏。退出全屏按钮现在位于不同的位置。
  2. 按全屏退出。全屏按钮回到原来的位置。即使鼠标未在按钮上方,悬停动画也会显示。

代码: -

<Style x:Key="ExitFullScreenButton" TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="FocusStates"> 
            <VisualState x:Name="Focused"/> 
            <VisualState x:Name="Unfocused"/> 
           </VisualStateGroup> 
           <VisualStateGroup x:Name="CommonStates"> 
            <VisualStateGroup.Transitions> 
             <VisualTransition GeneratedDuration="00:00:00.1500000" To="MouseOver"/> 
            </VisualStateGroup.Transitions> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="MouseOver"> 
             <Storyboard> 
              <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.Opacity)"> 
               <EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
              </DoubleAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Pressed"/> 
            <VisualState x:Name="Disabled"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Image Source="Images/ControlBar/exitFullScreenButton.png"/> 
          <Image x:Name="image" Opacity="0" Source="Images/ControlBar/exitFullScreenButtonHover.png"/> 
          <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="" ToolTipService.ToolTip="Full Screen"/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 


<Button x:Name="ExitFullScreenButton" Click="ExitFullScreenButton_Click" Canvas.Top="14" 
        Style="{StaticResource ExitFullScreenButton}" 
        Width="32" Content="Button" Visibility="Collapsed"/> 

回答

0

我最终只是让用户控制和执行代码的动画。

private Storyboard hoverAnimation = new Storyboard(); 

private void CreateAnimation() 
     { 
      SizeChanged += OnSizeChanged; 

      Duration duration = new Duration(TimeSpan.FromMilliseconds(150)); 
      hoverAnimation.Duration = duration; 

      DoubleAnimation animation = new DoubleAnimation(); 
      animation.Duration = duration; 
      hoverAnimation.Children.Add(animation); 

      Storyboard.SetTarget(animation, HoverIcon); 
      Storyboard.SetTargetProperty(animation, new PropertyPath(Image.OpacityProperty)); 

      animation.To = 1; 
     }