ドラッグ アンド ドロップを実装している場合、階層の基本データは手動で更新する必要があります。これは xamNetworkNode コントロールの必要条件であるため、変更を反映することがあります。
以下は、ネットワーク構造を再編成する、ドラッグされているノードのプレビューです。
図 1: ノードのドラッグ
必要な NuGet パッケージの参照:
Infragistics.WPF.NetworkNode
NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
名前空間宣言を追加します。
XML 名前空間宣言を XAML ファイルに追加します:
XAML の場合:
xmlns:ig="http://schemas.infragistics.com/xaml"
コード ビハインドに using/imports を配置します。
Visual Basic の場合:
Imports Infragistics.Controls.Maps
Imports Infragistics.DragDrop
C# の場合:
using Infragistics.Controls.Maps;
using Infragistics.DragDrop;
Drop Target として xamNetworkNode を構成します。
XAML の場合:
<ig:XamNetworkNode>
<ig:DragDropManager.DropTarget>
<ig:DropTarget IsDropTarget="True" />
</ig:DragDropManager.DropTarget>
</ig:XamNetworkNode>
Visual Basic の場合:
Dim networkNode As New XamNetworkNode()
' 新しい DropTarget オブジェクトを作成します
Dim dropTarget As New DropTarget()
dropTarget.IsDropTarget = True
' NetworkNode を Drop Target にします。
DragDropManager.SetDropTarget(networkNode, dropTarget)
C# の場合:
XamNetworkNode networkNode = new XamNetworkNode();
//新しい DropTarget オブジェクトを作成します
DropTarget dropTarget = new DropTarget();
dropTarget.IsDropTarget = true;
// NetworkNode を Drop Target にします。
DragDropManager.SetDropTarget(networkNode, dropTarget);
ノード ドラッグ ソースと ドロップ ターゲットを作成します。
ノードで作業するため、xamNetworkNode コントロールは 2 つのキー クラスを使用します:
NetworkNodeNode - そのオブジェクトは実際の Network ノードです。このクラスは、親ノードと子ノード、ノードが表示するデータ、ノードの作成のために使用される NetworkNodeNodeLayout オブジェクトへの参照に関する情報を持っています。
NetworkNodeNodeControl - そのオブジェクトは NetworkNodeNode オブジェクトのビジュアル表現として機能します。
そのため、Drag Sources および Drop Targets は NetworkNodeNodeControl オブジェクトです。
ノードがパンニングのために NetworkNode の可視領域から出るときは常に、そのノードに関連する NetworkNodeNodeControl が破棄されます。また、ノードの子が折り畳まれるときは、その NetworkNodeNodeControls が破棄されます。
ノードを表示する必要がある場合、そのノードに関連する新しい NetworkNodeNodeControl が作成され、 NodeControlAttachedEvent が発生します。
Drag and Drop Framework で作業をする場合、その作成時に DragSource および DropTarget プロパティを NetworkNodeNodeControl オブジェクトに添付する必要があります。