Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uwp 操纵增量事件的处理会中断父ScrollViewer_Uwp_Scrollviewer_Windows 10 Mobile_Flipview - Fatal编程技术网

Uwp 操纵增量事件的处理会中断父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

我想实现如下动画:

因此,我决定使用FlipView作为主容器,使用带有两行的网格作为数据模板。网格将处理操纵delta事件,以降低文本第一部分的高度,使第二部分可见。当文本高度达到最小值时,我们必须将事件路由到父ScrollViewer,以便它可以翻转到下一个项目

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
事件的订阅