在我的WPF應用程序中,在可見空間的底部有一個部分可見的網格。當您將鼠標懸停在上面時,它會向上滑動,網格中的所有內容都可以看到。當鼠標離開網格時,它向下滑動。網格中有Combo和TextBoxes,它們將包含信息並能夠被用戶更新。單擊網格時更改MouseLeave動畫
我該如何做到這一點,如果我點擊網格中的任何位置,MouseLeave動畫不再消失(即使您的鼠標離開,網格也會保持不變)?
我已經實現了我的動畫2種不同的方式,試圖讓它按照我想要的方式行事,但至今沒有運氣。
實現1:
`<Grid x:Name="PopupAnimation" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Height="30">
<Grid.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard Name="MouseOn">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" From="30" To="90" Duration="0:0:.15"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard Name="MouseOff">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" From="90" To="30" Duration="0:0:0.15"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeftButtonDown">
<StopStoryboard BeginStoryboardName="MouseOff" />
</EventTrigger>
</Grid.Triggers>
`
實現2:
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Name="MouseOn">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" From="30" To="90" Duration="0:0:.15"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Name="MouseOff">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Height" From="90" To="30" Duration="0:0:0.15"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
要麼是這些標題下正確的道路?如何禁用(並啓用)動畫?
如果沒有什麼在網格一旦它表明是用戶可操作的。一個快速的事情,你可以做的只是在網格的單擊事件只是做一個布爾切換到父Grid上的IsHitTestVisible屬性顯示,所以它會忽略任何鼠標事件,如果點擊和IsHitTestVisible =「false」,這將使任何這些IsMouseOver觸發器及其操作。 –
@ChrisW。不幸的是網格中有用戶可操作的部分(組合框和什麼)。我希望能夠讓用戶快速查看信息(鼠標懸停)並對其進行編輯(一旦單擊後,保持直到按鈕指向下),使用起來更容易一些。現在將編輯成問題。 – Pants