如何在 Xamarin UWP 中创建可滑动的 ListView 渲染器

How to create swipeable ListView renderer in Xamarin UWP

我有一个包含 TabbedPage 的应用程序,其中包含自定义 ContentViews

在主要 ContentView 中,我有一个自定义 ListView,它在 Xamarin UWP 中有一个 ListViewRenderer

ListView 项有一个模板:

<DataTemplate x:Key="ListViewItemTemplate">
    <Grid x:Name="grid">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <!--  TEXT -->
        <TextBlock Grid.Column="0"
                   Margin="5"
                   VerticalAlignment="Center"
                   Foreground="Black"
                   Text="{Binding ActualText}"
                   TextWrapping="WrapWholeWords" />
        <!--  CC -->
        <my:CustomControl Grid.Column="1"
            ActualCValue="{Binding ActualValue, Mode=TwoWay}" />
        <!--  PICKER  -->
        <ComboBox x:Name="cboxPicker"
                  Grid.Column="2"
                  Width="90"
                  Margin="3"
                  VerticalAlignment="Center"
                  ItemsSource="{StaticResource  dataSource}"
                  SelectedIndex="{Binding ActualValue,
                                          Mode=TwoWay}" />
        <!--  SEP -->
        <Border Grid.Row="1"
                Grid.ColumnSpan="3"
                BorderBrush="Gray"
                BorderThickness="1" />
    </Grid>
</DataTemplate>

不幸的是,当我尝试使用滑动时,标签没有改变。

如果我使用 内置的 Xamarin.Forms ListView 和由图像和文本组成的项目,它可以正常工作。

可能与Button获取焦点有关(假设)

我应该更改什么才能使我的自定义 ListViewRenderer 与滑动一起使用?

由于我使用的是ListViewRenderer,XAML代码中没有ListView(它仅由渲染器提供)。

然而,问题出在我在自定义渲染器中使用的 ListView 配置上。

我有这个:

(Control as SemanticZoom)?.ManipulationMode = Windows.UI.Xaml.Input.ManipulationModes.None;

现在我用这个,滑动正常:

(Control as SemanticZoom)?.ManipulationMode = Windows.UI.Xaml.Input.ManipulationModes.System;