Ich bin mir nicht sicher, ob ich Sie richtig und über Ihren speziellen Fall und Anforderungen zu verstehen, aber ich würde Standard-Neuordnungs Verhalten in der Listenansicht verwenden:
<ListView x:Name="MyListView" ItemsSource="{Binding Items}" ReorderMode="Enabled" CanReorderItems="True" AllowDrop="True">
...
</ListView>
Dieser Code ermöglicht es Ihnen, bereits Artikel existiert in ListView
neu zu ordnen . Zum Hinzufügen neuer Elemente per Drag & Drop müssen Sie für Drop
Ereignis auf ListView
abonnieren und Drop-Artikel in Ihre Artikel-Sammlung, die vom Typ ObservableCollection<YourItemType>
sein sollte, und zugeordnet/ListView.ItemsSource
zugewiesen werden.
Wenn Sie noch visuelles Objekt anpassen, die Sie & Drop ziehen Sie auf DragStarting
Ereignis in diesem Objekt anmelden müssen und legen Sie eine beliebige UI-Element Sie wollen:
private async void OnDragStarting(UIElement sender, DragStartingEventArgs args)
{
var deferral = args.GetDeferral();
args.Data.Properties.Add("ItemViewModel", DataContext);
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(uiElementToDrag);
var buffer = await renderTargetBitmap.GetPixelsAsync();
var bitmap = SoftwareBitmap.CreateCopyFromBuffer(buffer,
BitmapPixelFormat.Bgra8,
renderTargetBitmap.PixelWidth,
renderTargetBitmap.PixelHeight,
BitmapAlphaMode.Premultiplied);
args.DragUI.SetContentFromSoftwareBitmap(bitmap);
deferral.Complete();
}
uiElementToDrag
ist visuelle dragable Element vom Typ UIElement
.
Mein Problem ist, dass DragStarting nicht für eine Listview aufgerufen wird, wenn Sie CanDragItems = „true“ gesetzt und ich brauche DragItemsStarting zu verwenden. – ventayol