Si
Pour un truc sensé être super puissant et faciliter la vie moi je trouve ça lourd le drag drop en UAP.
Voilà un truc qui fait exactement ce que tu demandes, j'ai modifié deux méthodes de ton exemple :
Code :
- private void ListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
- {
- Person person = ((Person)e.Items[0]);
- e.Data.SetText(person.ID + "-" + person.LastName + " " + person.Name);
- }
- private async void myTB_Drop(object sender, DragEventArgs e)
- {
- if (e.DataView.Contains(StandardDataFormats.Text))
- {
- var def = e.GetDeferral();
- var s = await e.DataView.GetTextAsync();
- string id = s.Substring(0, s.IndexOf('-'));
- string name = s.Substring(s.IndexOf('-') + 1);
- myTB.Text = name;
- myTB.Tag = id;
- e.AcceptedOperation = DataPackageOperation.Copy;
- def.Complete();
- }
- }
|
L'idée c'est qu'au moment du Drag tu enregistres dans le DataPackage lié à l'événement le truc à emmener, et tu le récupères lors du Drop.
Là j'ai utilisé du Text et un bricolage à base de split pour passer l'id et le nom.
En théorie DataPackage a aussi une méthode SetData, mais je ne sais pas l'utiliser pour des objets Custom ( ), mais on trouve des exemples sur Internet.
Mon exemple ne permet de dropper qu'un seul élément à la fois, mais c'est ce que tu veux apparemment.
Il y a peut être d'autre façons de faire (genre récupérer l'objet droppé avec les données qui ont servi à le binder) mais celle la fonctionne.
Message édité par TotalRecall le 10-07-2016 à 10:54:08
---------------
Topic .Net - C# @ Prog