現在、添付プロパティを使用してTreeViewのドラッグアンドドロップの実装を行っています。長い話をする短いドラッグ&ドロップを有効/無効にするために、添付プロパティを使用したいと考えています。私はすべてを稼働させることができました。そして、私は本当に奇妙な問題に遭遇しています。 TreeView.DragOverイベントを監視して、ツリー内のどこに新しいアイテムを挿入するかを決定しています。私の問題は、TreeViewItemのコンテンツ(境界線またはtextBlock)の右にドラッグすると、DragOverイベントが生成されますが、DragEventArgs.OriginalSourceプロパティがTreeViewコントロールのGrid要素に設定されていることです。グリッドやTreeViewItemはイベントを生成しませんか?TreeViewItemドラッグアンドドロップでDragOverイベントが発生しない
次のイベントに結びつけコードでそれをチョキである:私はまた、マウスをドラッグアンドドロップするので動作しません。その上に配置されているツリービューアイテムを決定するためにHitTestを使用しようとした
/// Property Changed callback when you set DragDrop attached property
private static void OnDragDropPropertyChanged_(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
TreeView control = (TreeView)obj;
if ((bool)args.NewValue == true)
{
control.AllowDrop = true;
...
control.DragEnter += OnTreeViewDragEnter_;
control.DragLeave += OnTreeViewDragLeave_;
control.DragOver += OnTreeViewDragOver_;
control.Drop += OnTreeViewDrop_;
}
}
すべてのマウスイベントを停止しているようだ。
基本的に私はTreeViewItemの右側全体をドラッグアンドドロップのドロップゾーンとして使用し、アイテムのコンテンツをホストする領域だけでなく、誰にも何か提案はありますか?
私には分かりませんが、私はDoDragDrop呼び出しを開始する部分を省略しました。基本的に私は「...」に入っています。ドラッグを開始するためにMouseMoveとMouseLeftButtonDownを使用します。基本的にドラッグアンドドロップはうまくいきますが、TreeViewItemの右側にカーソルを置くと、すべてのTreeViewItemでHitTestが失敗し、TreeViewの最下位レベルのグリッドからイベントが発生します。 – Etienne