WPF의 경우, 보이는 부분의 하단에 부분적으로 눈에 띄는 눈금이 있습니다. 마우스를 올리면 위로 움직이고 그리드의 모든 내용이 표시됩니다. 마우스가 그리드를 떠나면 다시 아래로 슬라이드됩니다. 정보를 포함하고 사용자가 업데이트 할 수있는 표에 콤보 및 텍스트 상자가 있습니다.Grid를 클릭하면 MouseLeave 애니메이션이 변경됩니다.
그리드의 아무 곳이나 클릭하면 MouseLeave 애니메이션이 더 이상 작동하지 않게됩니다 (마우스를 놓아도 그리드가 유지됩니다).
필자는 원하는대로 동작하도록 애니메이션을 구현하기 위해 두 가지 다른 방법을 구현했지만 지금까지는 아무런 운이 없었습니다.
구현 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>
이 중 하나가 올바른 길을 가고 있습니까? 애니메이션을 비활성화 (및 활성화)하려면 어떻게합니까?
가 표시 된 후에는 사용자가 실행 가능한 것입니다 그리드에서 아무것도합니다. 당신이 할 수있는 빠른 일은 그리드의 click 이벤트에 대한 것입니다. 부모 그리드의 IsHitTestVisible 속성을 부울 토글하는 것만으로 클릭하면 모든 마우스 이벤트를 무시하고, IsHitTestVisible = "false"는 무시합니다. IsMouseOver 트리거와 그 동작. –
@ChrisW. 불행히도 그리드에는 사용자가 실행할 수있는 부분이 있습니다 (콤보 박스 등). 나는 사용자가 정보 (마우스 오버)를 빠르게보고 편집 할 수있게하기를 바라고있다. (한 번 클릭하면 버튼이 내려갈 때까지 머물러야한다.) 그 질문을 지금 편집 할 것입니다. – Pants