我在这里查看了大多数“幻灯片动画”的答案,但似乎无法使我的工作正常进行,我认为这是因为我试图基于可见性来触发它。
简化后,我有一个网格,其中包含一个按钮,另一个网格在同一单元格中彼此堆叠。嵌套网格的可见性设置为“隐藏”,当单击按钮时,我希望嵌套网格变得可见并从左侧滑入。我有这个:
fig, ax = plt.subplots(figsize=(20, 20))
base = map_df.plot(ax=ax, color='gray')
gdf.plot(ax=ax, markersize=5)
但是,由于嵌套的网格填充了单元格的可用空间,所以只要将“可见性”设置为“可见”,它就会立即显示而不是滑入。我可以理解其背后的技术原因,但是弄清楚如何实现它的麻烦。我已经尝试过使用关键帧为“边距”设置动画,但这一点都不顺利。
注意:我出于示例目的对一些值进行了硬编码,例如DoubleAnimation中的From / To,并故意将其设置为较长的动画(3秒)。
我确定我缺少一些简单的东西...
编辑: 理想情况下,我希望动画由可见性更改触发,例如以下问题: WPF panel slide in from left animation
编辑#2: 每次我最终放弃并提出问题时,我都会在稍后找到答案。我认为这仅仅是因为我在嵌套Grid上缺少了RenderTransform / TRanslateTransform:
<Window x:Class="WpfApp8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp8"
mc:Ignorable="d"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<Button x:Name="btnClickMe" Content="Click me!">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="btnClickMe">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="grdHello"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="grdHello"
Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.X)"
From="0" To="500" AccelerationRatio="0.2" DecelerationRatio="0.1"
Duration="0:0:3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
<Grid x:Name="grdHello" Background="White" Visibility="Hidden">
<TextBlock>Hello!</TextBlock>
</Grid>
</Grid>
</Window>