2011-01-19 9 views
0

MouseOverではなく、MouseHoverにトリガーを設定する方法があるかどうか疑問に思っていました。MouseHoverでトリガー?

私は、ユーザーが指定した領域にX秒間マウスを置いたまま、マウスオーバーでマウスオーバーすると発生するようにしたいと思います。

+0

何かのためにDuration="0"を設定することができ、またはあなたが実際に実際のアクションを必要とする何かをする必要がありますアニメーションの一部をスキップする
と/またはトリガー? –

+0

@ワンコ:マウスをX秒間マウスで握ったときにコントロールを拡大したい。残りのコントロールをResizedコントロールのサイズに合わせてサイズ変更したいので、サイズを変更したコントロールをツールヒントに配置するだけではありません。私はツールヒントで何かをハックすることができるかもしれないが、それを考えなかった。 – Rachel

答えて

1

X秒後にIsMouseOverトリガを開始するには、ストーリーボードを使用して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)をアニメートすることもできます –