К сожалению, в Xamarin.Forms пока нет встроенной функции перетаскивания.Вы все еще можете реализовать его самостоятельно, используя PanGestureRecognizer
.
. Вы можете добавить распознаватель жестов к своему виду, например Label
, например:
<Label>
<Label.GestureRecognizers>
<PanGestureRecognizer PanUpdated="PanGestureRecognizer_OnPanUpdated" />
</Label.GestureRecognizers>
</Label>
Теперь в PanUpdated
Обработчик событий вы можете использовать TranslationX
и TranslationY
, чтобы перемещать представление.
private double _startTranslationX, _startTranslationY
private void PanGestureRecognizer_OnPanUpdated(object sender,
PanUpdatedEventArgs e)
{
var box = (BoxView) sender;
if (e.StatusType == GestureStatus.Started)
{
_startTranslationX = box.TranslationX;
_startTranslationY = box.TranslationY;
}
else if (e.StatusType == GestureStatus.Running)
{
box.TranslationX = _startTranslationX + e.TotalX;
box.TranslationY = _startTranslationY + e.TotalY;
}
else if (e.StatusType == GestureStatus.Completed)
{
box.TranslationX = _startTranslationX + e.TotalX;
box.TranslationY = _startTranslationY + e.TotalY;
//handle drop here (depending on your requirements)
}
}
Чтобы реально реализовать функцию удаления, вам придется вручную проверить, где находится объект в данный момент и разрешено ли удаление там.