在我的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