Ich verwende das SilverLight Toolkit zur Implementierung einiger Drag/Drop-Funktionen in einer Silverlight 4-Webanwendung. Meine Drag-Quelle ist eine Listbox, und ich habe achtzehn potenzielle Drop-Ziele. Ich muss zulassen/nicht erlauben fallenlassen basierend auf einem String-Wert für das gezogene Objekt.Ermitteln Sie im Code, ob ein Dragdrop-Drop mit dem Silverlight Toolkit zulässig ist
Ich habe kein Problem, den Vergleich zu machen und zu bestimmen, ob das Objekt auf dem Ziel fallen gelassen werden kann oder nicht, aber ich habe Probleme herauszufinden, was das beste Ereignis ist und wie man es nicht macht Akzeptiere den Tropfen.
Ich habe mir das DragEnter-Ereignis angeschaut, und das sieht nach dem besten Ort aus, um damit umzugehen, aber ich bin mir nicht ganz sicher, was ich tun muss, damit es nicht fällt. Hier ist ein Ausschnitt aus einem Teil des Codes, die ich versucht habe, aber es verhindert nicht den Tropfen:
lbDragDrop.DragEnter += (src, e) =>
{
VaultSocketViewModel vm = this.DataContext as VaultSocketViewModel;
ListBoxDragDropTarget target = src as ListBoxDragDropTarget;
ObservableCollection<ItemModel> listBoxBinding = vm.Slots[target.Name];
object data = e.Data.GetData(e.Data.GetFormats()[0]);
ItemDragEventArgs eventArgs = data as ItemDragEventArgs;
SelectionCollection coll = eventArgs.Data as SelectionCollection;
ItemModel newItem = coll.Select(t => t.Item).OfType<ItemModel>().FirstOrDefault();
if (!target.Name.StartsWith(newItem.ItemSlot)) // don't allow drop
{
e.Effects = Microsoft.Windows.DragDropEffects.None;
e.Handled = true;
}
else
{
}
};
ich mit dem Code oben versucht, und es immer noch erlaubt den Tropfen. Ich überprüfe derzeit die Anwendbarkeit der Drop in der Drop-Ereignishandler, und das funktioniert jetzt gut. Ich werde dies noch einmal besprechen, wenn ich Zeit habe, und es erneut versuchen. Wenn es dann funktioniert, werde ich als richtig markieren. – Robaticus
danke für Ihre Eingabe. Ich habe dich dafür beschuldigt, meinen Hintern in die richtige Richtung zu schieben. – Robaticus