私のWPFアプリケーションでは、可視領域の下部に部分的に目に見えるグリッドがあります。マウスオーバーすると、上にスライドし、グリッド内のすべてが表示されます。マウスがグリッドを離れると、マウスはグリッドを下にスライドします。グリッドには、情報を含み、ユーザーが更新できるコンボボックスとテキストボックスがあります。グリッドがクリックされたときに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>
は、これらのいずれかが右の道を見出していますか?アニメーションを無効にするにはどうすればよいですか?
。あなたができる簡単なことは、グリッドのクリックイベントだけです。親グリッドのIsHitTestVisibleプロパティをブールトグルするだけで、クリックされた場合のマウスイベントは無視され、IsHitTestVisible = "false"はそれらを無効にしますIsMouseOverトリガーとそのアクション。 –
@ChrisW。残念ながら、グリッドにはユーザーが実行可能な部分(コンボボックスなど)があります。私は、ユーザーが情報をすばやく表示(マウスオーバー)して編集することができるようにしたいと考えています(クリックすると、ボタンが消えるまで)。それを今質問に編集します。 – Pants