2011-01-19 59 views
0

我想知道是否有辦法在MouseHover上設置觸發器,而不是MouseOver在MouseHover上觸發?

我想要一個動作發生,當用戶將鼠標停留在指定區域的X秒,而不是當他們只是MouseOver它通過。

+0

一些簡單的工具提示(對於該時間是可配置)動畫部件,或做你真正需要做的事情,需要一個實際的行動和/或觸發器? – 2011-01-19 19:04:41

+0

@Wonko:我想在鼠標懸停X秒的時候放大控件。我希望剩下的控件根據Resized控件的大小來調整大小,所以我不能將調整大小的控件放在ToolTip中。儘管我可能能夠用ToolTip做一些事情,但沒有想到這一點。 – Rachel 2011-01-19 19:49:25

回答

1

要使IsMouseOver觸發器在X秒後開始,您應該可以使用Storybard並設置BeginTime屬性。這裏有一個Button的例子,當鼠標懸停2秒時,它的尺寸增加50%。
要跳過你可以設置Duration="0"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>