2011-01-19 6 views
0

MouseHover에 방아쇠를 설치하는 방법이 있다면 MouseOver이 아닌지 궁금합니다.MouseHover에서 트리거 하시겠습니까?

사용자가 MouseOver를 지나치는 대신 X 초 동안 마우스를 지정된 영역 위로 계속 움직이면 동작이 발생합니다.

+0

뭔가 Duration="0"을 설정할 수 있습니다 애니메이션 부분을 건너 뛰고, 또는 당신이 실제로 할 실제 작업을 필요로 뭔가를 할 필요가 있고/또는 트리거? –

+0

@Wonko : 마우스를 X 초 동안 마우스로 가리키면 컨트롤을 확대하고 싶습니다. 나머지 컨트롤은 Resized 컨트롤의 크기에 따라 크기를 조정하기를 원하므로 크기 조정 컨트롤을 ToolTip에 넣을 수는 없습니다. 나는 생각하지 못했지만 툴팁으로 뭔가 해킹 할 수 있을지도 모른다. – Rachel

답변

1

X 초 후에 IsMouseOver 트리거를 시작하려면 Storybard를 사용하고 BeginTime 속성을 설정할 수 있어야합니다. 다음은 마우스가 2 초 동안 마우스를 가리키면 크기가 50 % 증가하는 Button의 예입니다.
당신이 (시간이 구성 할 수있는) 도구 설명 한 간단하게 DoubleAnimation

<Button Content="Button" 
     Height="23" 
     Width="75" 
     RenderTransformOrigin="0.5 0.5"> 
    <Button.RenderTransform> 
     <ScaleTransform /> 
    </Button.RenderTransform> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Trigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard BeginTime="00:00:02"> 
           <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)" To="1.5"/> 
           <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)" To="1.5"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.EnterActions> 
        <Trigger.ExitActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)" To="1.0"/> 
           <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)" To="1.0"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.ExitActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

감사합니다, 그것은 올바른 방향으로 나를 지적했습니다. 나는이 객체의 크기에 따라 다른 컨트롤을 조정하기를 원했기 때문에 스케일 대신 객체의 높이를 애니메이션으로 표현했습니다. 나는 실제로 AttachedProperty에서 모든 것을 가지고 있으므로 매우 행복하다. – Rachel

+0

비슷한 결과를 얻기 위해 RenderTransform 대신에 (Control.LayoutTransform). (ScaleTransform.ScaleY) 애니메이션을 적용 할 수도있다. –