Silverlight 4 Webアプリケーションで、SilverLight Toolkitを使用してドラッグ&ドロップ機能を実装しています。私のドラッグソースはリストボックスであり、私は18個の潜在的なドロップターゲットを持っています。ドラッグされたオブジェクトの文字列値に基づいてドロップを許可/禁止する必要があります。Silverlight Toolkitを使用してドラッグドロップを許可するかどうかをコードで判断します。
私は比較を行い、アイテムがターゲット上にドロップされることが許されているかどうかを判断することに問題はありませんが、最高のイベントが何を処理するのかがわかりません。ドロップを受け入れる。
DragEnterイベントを見てきましたが、これを処理するのに最適な場所のように見えますが、落とさないようにするために何をする必要があるのかよくわかりません。ここで私が試したコードの一部の抜粋ですが、それは落下を防ぐことはできません。
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
{
}
};
私は上記のコードを試みたが、それはまだドロップすることができます。私は現在Dropイベントハンドラのドロップの適用可能性をチェックしています。私は時間があるときにこれを再訪し、もう一度やり直します。それがうまくいけば、私は正しいとマークします。 – Robaticus
ご連絡ありがとうございます。私はあなたのために正しい方向に私のお尻を押すためにあなたを+1しました。 – Robaticus