【发布时间】:2016-04-12 15:51:38
【问题描述】:
我想在WPF,Frame控件上做一个页面滑动效果。 我们开始吧。
首先,我放了一个框架和2个导航按钮:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="25"/>
</Grid.ColumnDefinitions>
<Frame x:Name="frame" Source="page1.xaml" Grid.Column="1" />
<Button Grid.Column="0" Content="<" Click="GoPrevious"/>
<Button Grid.Column="2" Content=">" Click="GoNext"/>
</Grid>
然后我创建 3 个不同颜色的页面:Page1.xaml、Page2.xaml 和 Page3.xaml
现在当点击导航按钮时,只会简单地导航到一个 uri:
frame.Navigate(new Uri("page2.xaml", UriKind.Relative));
完成。现在我想让每个页面在导航时滑动(每个人都想要它)。 所以我的计划是设置每个页面的Loaded EventTrigger:
<Page.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="500,0,-500,0" To="0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="FrameworkElement.Unloaded">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="0" To="-500,0,500,0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Page.Triggers>
而且它有效!一切都很好,直到我发现页面不连续,这意味着,当您导航到 page2 时,page1 将立即卸载,而不是开始 page2 加载事件。我尝试设置page1的卸载事件,但不起作用。
我想要的是,当page1开始退出时,page2应该马上就上台了,就像一列一列的火车。
那么怎么做呢?谢谢。
【问题讨论】: