Uwp 操纵增量事件的处理会中断父ScrollViewer
我想实现如下动画: 因此,我决定使用FlipView作为主容器,使用带有两行的网格作为数据模板。网格将处理操纵delta事件,以降低文本第一部分的高度,使第二部分可见。当文本高度达到最小值时,我们必须将事件路由到父ScrollViewer,以便它可以翻转到下一个项目Uwp 操纵增量事件的处理会中断父ScrollViewer,uwp,scrollviewer,windows-10-mobile,flipview,Uwp,Scrollviewer,Windows 10 Mobile,Flipview,我想实现如下动画: 因此,我决定使用FlipView作为主容器,使用带有两行的网格作为数据模板。网格将处理操纵delta事件,以降低文本第一部分的高度,使第二部分可见。当文本高度达到最小值时,我们必须将事件路由到父ScrollViewer,以便它可以翻转到下一个项目 private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) { if (CanDecreaseLi
private void OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
if (CanDecreaseLine(e))
{
//Decrease first line height...
e.Handled = true;
}
}
但我面临的问题是,当我尝试处理子(网格)端的操纵增量时,FlipView停止工作。不管我们是否设置了已处理的属性
以下是简化的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停止工作是因为操纵模式=“TranslateY,TranslateInertia”,但如果没有它,Grid将不会接收我需要更改网格行大小以实现动画的操纵事件
是否可以在ScrollViewer的子级上处理操纵事件,或者是否有其他方法来实现此动画?当FlipView更改
SelectedItem
时,您可以尝试订阅操纵Delta
事件。然后根据需要在网格中对其进行内部处理。然后,当您检测到用户进一步滚动并且您应该停止处理网格中的事件时,请取消订阅该事件,并让FlipView正常处理该事件
还没有测试过,所以不确定它是否有效
此外,您可能还需要在可视化树中进行一些挖掘,以获取正确的网格
,从而将其分到事件中。或者在DataTemplate
中使用UserControl
,该控件具有一个属性(可以绑定到该属性),可以切换operationdelta
事件的订阅