2009-12-15 2 views
0

Silverlight에서 이미지로 만든 버튼이 여러 개 있습니다. 각각의 경우 버튼에는 일반 이미지와 호버 이미지가 있습니다. 마우스를 가져 가면 호버 이미지가 15 초 이상 희미 해 지도록 블렌드를 사용했습니다.Silverlight 버튼 스타일이 전체 화면에서 멈춤.

이 문제는 스타일에 포함되어 있기 때문에 더 이상 이미지에 액세스하는 방법을 알 수 없다는 것입니다. 그래서 두 개의 교체 가능한 이미지가있는 단일 UserControl 대신 각 단추에 대해 별도의 스타일이 있습니다.

또한 전체 단추 및 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; 
     } 
관련 문제