如何在 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;
我有一个包含 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;