Ma page contient deux éléments ListView, ListA et ListB. Vous pouvez copier des éléments (objets) de ListA à ListB en utilisant un simple glisser-déposer. Pour cela, j'utilise les événements DragItemsStarting et Drop. Cela fonctionne très bien. Vous pouvez maintenant réorganiser les éléments dans ListB. Toutes les propriétés requises sont définies (réorganisation, glisser-déposer) et cela fonctionne également.Réorganiser la listeVoir les éléments: Événement et Glisser/Déposer
Mais maintenant je veux réagir sur le recours, mais je n'ai pas trouvé un événement que je pourrais écouter. J'ai donc pensé qu'il serait possible d'utiliser les événements glisser/déposer sur la même liste pour savoir quand l'utilisateur a changé la position d'un objet. Comment puis-je reconnaître que les éléments de ListB ont été réordonnés?
Mon code (avec le drag and drop approche):
private void ListB_DragItemsStarting(object sender, DragItemsStartingEventArgs e) {
var item = ((FeedItem)e.Items[0]);
e.Data.RequestedOperation = DataPackageOperation.Move;
e.Data.SetDataProvider("FeedItem", request => request.SetData(item));
}
private async void ListB_Drop(object sender, DragEventArgs e) {
DataPackageView view = e.Data.GetView();
if (view.Contains("FeedItem") && view.RequestedOperation == DataPackageOperation.Copy) {
//item from ListA
}
if (view.Contains("FeedItem") && view.RequestedOperation == DataPackageOperation.Move) {
//item from ListB
}
}
intéressant. J'ai un 'ObservableCollection' et je viens de m'abonner à l'événement' CollectionChanging'. Mais j'ai dû laisser 'CanReorderItems = True'. La réponse à ce post a tout: http://stackoverflow.com/questions/16388867/xaml-c-what-event-fires-after-reordering-a-gridview/16446241#16446241 –