Как создать представление списка с функцией удаления салфеткой в формах xamarin

#listview #xamarin.forms #xamarin.android #xamarin.ios #swipe-gesture

Вопрос:

Как создать представление списка с функцией удаления свайпа без управления SwipeView в формах xamarin. Мне нужна страница представления списка с удалением салфеткой, если статус элемента ячейки «ожидание», когда пользователь проводит по ячейке вправо, необходимо отобразить значок удаления в представлении списка. Я получил то же самое, используя элемент управления swipeview, но этот элемент управления является «экспериментальным». Есть ли какое-либо другое решение для того же самого. пожалуйста, помогите в этом.

Комментарии:

1. docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…

2. Мне нужен значок удаления в ячейке вместо верхней части списка

3. затем используйте SwipeView

4. Мы уже некоторое время используем SwipeView в наших проектах в моей компании, и у нас не было никаких проблем в производстве.

Ответ №1:

Вот обходной путь через SwipeGestureRecognizer . Что касается «удалить значок», вместо этого вы можете использовать пользовательскую кнопку и установить ее «Видимость» на «ложь», чтобы скрыть ее.

 <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>
 

Добавьте распознаватель Swipegesturer в сетку в ячейке просмотра.

 <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 amp;amp; 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
}