У меня есть группа ячеек (типа StackLayout), и все они находятся в WrapLayout. Я не могу понять, как сделать его переупорядочиваемым, подобно Drag & Drop ListView.Xamarin.Forms Reorderable WrapLayout
Вот WrapLayout:
WrapLayout layout = new WrapLayout
{
Spacing = 5,
Orientation = StackOrientation.Horizontal,
Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5),
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
};
И вот одна клетка:
// Configure cell
var cell = new StackLayout
{
WidthRequest = Device.Idiom == TargetIdiom.Phone ? 60 : 140,
HeightRequest = Device.Idiom == TargetIdiom.Phone ? 60 : 50,
BackgroundColor = Color.FromRgb(60, 56, 72),
Children = {
new Label {
Text = Device.Idiom == TargetIdiom.Phone ? book.Contains("1") || book.Contains("2") || book.Contains("3") ? book.Substring(0,4).Replace(" ", "") : book.Substring(0,2) : book,
FontSize = 18,
TextColor = Color.White,
LineBreakMode = LineBreakMode.TailTruncation,
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalTextAlignment = TextAlignment.Center,
HorizontalTextAlignment = TextAlignment.Center
}
}
};
layout.Children.Add(cell);
А вот что приложение на самом деле выглядит как сейчас:
Любая помощь в том, чтобы сделать это возможным.
Итак, как мне перенести коробку пальцем? – ctkrocks
Lazy реализация: пусть другой коснуться другой части регистра экрана в качестве точки, в которой необходимо переместить выбранную ячейку StackLayout/ячейку, изменить порядок и обновить. Нелатическая реализация: определенно используйте Custom Renderers на каждой платформе. Это позволит вам перехватить дельта в движении, используя события, связанные с касанием, и после того, как событие касания закончится/палец поднят, вы вычислите, где StackLayout/ячейка размещена с использованием координат. Я считаю, что ваши собственные рендеринги - ваш лучший выбор. – nkorai
Отлично. Определенно нужно использовать не ленивую реализацию. :П – ctkrocks