【发布时间】:2015-11-30 00:35:58
【问题描述】:
我想实现这样的动画:
所以我决定使用 FlipView 作为主容器,使用 两行网格 作为数据模板。 Grid 将处理 ManipulationDelta 事件以降低文本第一部分的高度,以便第二部分变得可见。当文本高度达到最小值时,我们必须将事件路由到父 ScrollViewer,以便它可以翻转到下一项。
private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
if (CanDecreaseLine(e))
{
//Decrease first line height...
e.Handled = true;
}
}
但我遇到的问题是,当我尝试在子(网格)端处理 ManipulationDelta 时,FlipView 停止工作。不管我们是否设置了 Handled 属性
这里是简化的 xaml:
<FlipView>
<FlipView.ItemTemplate>
<DataTemplate>
<Grid Background="Transparent"
ManipulationMode="TranslateY, TranslateInertia"
ManipulationDelta="OnManipulationDelta">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="FirstLine"/>
<TextBlock Grid.Row="1" Text="SecondLine"/>
</Grid>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
ScrollViewer 由于 ManipulationMode="TranslateY, TranslateInertia" 而停止工作,但如果没有它,Grid 将不会接收我需要更改 Grid 行的大小以实现动画的操作事件。
是否可以在 ScrollViewer 的子级上处理操作事件,或者是否有任何其他方式来实现此动画?
【问题讨论】:
标签: uwp scrollviewer windows-10-mobile flipview