DragDropManagerがイベントをインターセプトする前にItemSelectedイベントが発生するため、完了する予定の操作がドラッグ&ドロップ操作であることを知る方法がありません。したがって、ItemSelectedの使用はここでは利用できません。
ただし、すべてが失われることはありません。 ItemClickイベントはMouseUpでのみ発生します。そのため、DragDrop操作中は起動しません。便利なことに、DragDropManagerはイベントを処理して、マウスボタンを離したときにDropで起動しないようにします。
ItemClick
イベントでItemSelectedビヘイビアを実行します(ItemSelectedと同じイベントシグネチャを持つため、名前を変更して意味的に正しいものにすることができます)。
XAML
<MyTreeView ItemClick="MyTreeView_OnItemClick" />
選択にトリガするために表示されるユーザーへの分離コード
public class CodeBehind {
public CodeBehind() {
var handleDroppedEvents = true;
DragDropManager.AddDropHandler(MyTreeView, MyTreeView_OnDropCompleted, handleDroppedEvents);
DragDropManager.AddDragDropCompletedHandler(MyTreeView, MyTreeView_OnDragDropCompleted, handleDroppedEvents);
}
private void MyTreeView_OnItemClick(object sender, RadRoutedEventArgs e) {
var tree = (RadTreeView) sender;
....
}
private void MyTreeView_OnDropCompleted(object sender, DragEventArgs e) {
/* If you want to suppress the default drop behaviour
* e.g. moving items around your tree */
var options =
DragDropPayloadManager.GetDataFromObject(e.Data, TreeViewDragDropOptions.Key) as TreeViewDragDropOptions;
if (options == null)
return;
/* Tell Telerik not to do its default thing */
options.DropAction = DropAction.None;
}
private void MyTreeView_OnDragDropCompleted(object sender DragDropCompletedEventArgs e) {
....
}
}
今すぐあなたのItemSelectedプロセスますが、選択はドラッグで傍受し、置き換えられますドラッグすると機能が落ちます。