问题描述
如何在 xamarin 表单中创建具有滑动删除功能的列表视图,而无需使用 swipeview 控件。 我想要一个带有滑动删除的列表视图页面,如果单元格项目状态为“待处理”,当用户向右滑动单元格时需要在列表视图中显示删除图标。我使用 swipeview 控件得到了相同的结果,但该控件是“实验性的”。有没有其他相同的解决方案。请帮忙解决这个问题。
解决方法
这是通过 SwipeGestureRecognizer
的解决方法。至于“删除图标”,您可以使用自定义按钮,并将其“IsVisible”设置为“false”以隐藏它。
<Grid.RowDefinitions>
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Name}"
FontAttributes="Bold" />
<Button x:Name="buttontest"
HorizontalOptions="End"
HeightRequest="10"
WidthRequest="60"
BackgroundColor="Red"
CornerRadius="20"
Text="Del"
Grid.Row="0"
Grid.Column="1"
Clicked="Button_Clicked"
IsVisible="false"/>
</Grid>
向 ViewCell 中的网格添加 SwipeGestureRecognizer。
<Grid.GestureRecognizers>
<SwipeGestureRecognizer Direction="Right" Swiped="SwipeGestureRecognizer_Swiped" />
</Grid.GestureRecognizers>
如果滑动,则显示按钮。
private void SwipeGestureRecognizer_Swiped(object sender,SwipedEventArgs e)
{
Button button = (sender as Grid).Children.FirstOrDefault(c => Grid.GetRow(c) == 0 && Grid.GetColumn(c) == 1) as Button;
button.IsVisible = true;
}
如果按钮被点击,隐藏按钮。
private void Button_Clicked(object sender,System.EventArgs e)
{
// hide button
(sender as Button).IsVisible = false;
// some other operations
}