J'ai un groupe de cellules (de type StackLayout) et elles sont toutes dans un WrapLayout. Je ne peux pas sembler comprendre comment le rendre réordonnable, semblable à Drag & Drop ListView.Xamarin.Forms Reorderable WrapLayout
Voici le 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,
};
Et voici une cellule:
// 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);
Et voici ce que l'application ressemble en fait à partir de maintenant:
Toute aide en rendant cela possible est apprécié.
Alors, comment puis-je déplacer la boîte avec leur doigt? – ctkrocks
Implémentation paresseuse: laissez un autre tapoter sur une autre partie de l'écran pour indiquer que le StackLayout/cellule sélectionné doit être déplacé, réorganisé et actualisé. Implémentation non-paresseuse: utilisez certainement les Renderers personnalisés sur chaque plate-forme. Cela vous permettra d'intercepter le delta en mouvement en utilisant les événements liés au toucher, et une fois l'événement tactile terminé/le doigt est levé, vous calculerez où le StackLayout/cellule est placé en utilisant les coordonnées. Les Custom Renderers sont votre meilleur pari je pense. – nkorai
Génial. Certainement besoin d'utiliser l'implémentation non paresseuse. : P – ctkrocks