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