2017-06-08 18 views
1

TreeViewコントロールでドラッグアンドドロップ動作を実装する方法は?例として、ファイルエクスプローラを使用して、ドラッグすることでファイルを別のフォルダに移動することができます。AvaloniaのTreeViewノードのドラッグアンドドロップの実装

私は私のXAMLで次のコードを持っている:私は、ノードをドラッグ可能にするにはどうすればよい

<TreeView Items="{Binding RootFiles}"> 
    <TreeView.ItemTemplate> 
    <TreeDataTemplate ItemsSource="{Binding Files}"> 
     <TextBlock Text="{Binding Name}"/> 
    </TreeDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

file explorer

を?

答えて

3

私は適切なドラッグアンドドロップをサポートしていませんが、残念ながら手動で実装する必要があります。

私は、あなたのケースに対する似たようなことをどのようにしたのかを説明します。

TreeViewコントロールレベルでマウスイベントを処理できます。 MouseDownが起動すると、PointerOverElementプロパティをチェックして、マウスが現在ツリーのノードの1つに含まれているかどうかを検出する必要があります(Parentプロパティを使用してツリーを走査するか、単にDataContextをチェックします)。 MouseMoveマウスボタンの1つが押されたときにイベントが発生すると、マウスをキャプチャする必要があります。この時点から、コードは「ドラッグ」状態になります。 TreeViewのCursorプロパティを変更して、ユーザーにフィードバックを提供することができます。 MouseUpがトリガーされると、カーソルの位置を他のノードに対して相対的に検出し、それに応じてモデルのバッキングTreeViewを変更する必要があります。

関連する問題