バージョン

ツールボックスから項目をドロップ (xamDiagram)

トピックの概要

目的

このトピックは、ダイアグラム項目がツールボックスからダイアグラムのサーフェスにドロップされるときにコピーされる方法について説明します。

前提条件

本トピックの理解を深めるために、以下のトピックを参照することをお勧めします。

トピック 目的

このトピックでは、xamDiagram コントロールの概要を説明します。

このトピックでは、xamDiagram のダイアグラム ツールボックスを構成する方法について説明します。

概要

ツールボックスから DiagramItem をドラッグしてダイアグラムのサーフェスへドロップまたはコピー/貼り付け操作した際に、コントロールはこの項目のコピーを作成します。更に以下の項目のプロパティがコピーされます。

  • DragDropData - このプロパティはシャローコピーを使用してコピーされます。この処理は同じオブジェクト インスタンスの参照コピーを作成します。

  • Content - このプロパティはディープコピーを使用してコピーされます。この処理は Activator.CreateInstance() メソッドを利用してオブジェクトの複製を作成します。つまり、複製されたダイアグラム項目がプロパティ値自体のインスタンスを持つことになります。バインディングとイベント ハンドラーはコピーされないことに注意してください。

Note
注:

ディープコピーによる複製処理はコントロールに不明なタイプを作成します。そのようなタイプのインスタンスは、パラメーターのないコンストラクターがある場合のみ作成できます。

Content プロパティのコピーの回避

ダイアグラム項目の Content プロパティのディープコピーを無効にする必要がある場合があります。以下の手順に従ってください。

  1. DiagramNode または DiagramConnection から拡張するカスタム クラスを作成します。

  2. Clone メソッドをオーバーライドします。

  3. 新しい Clone メソッドで CloneDiagramNodeProperties または CloneDiagramConnectionProperties メソッドをそれぞれ呼び出します。

  4. 最後の boolean 引数を false に設定します。

以下のコード例は、DiagramNodeContent プロパティのコピーを回避する方法です。

C# の場合:

public class CustomDiagramNode : DiagramNode
{
    public override DiagramItem Clone()
    {
        var newCustomDiagramNode = new CustomDiagramNode();
        CloneDiagramNodeProperties(this, newCustomDiagramNode, false);
        return newCustomDiagramNode;
    }
}

VB の場合:

Public Class CustomDiagramNode
    Inherits DiagramNode
    Public Overrides Function Clone() As DiagramItem
        Dim newCustomDiagramNode = New CustomDiagramNode()
        CloneDiagramNodeProperties(Me, newCustomDiagramNode, False)
        Return newCustomDiagramNode
    End Function
End Class

関連トピック

このトピックに関連する追加情報については、以下のトピックを参照してください。

トピック 目的

このトピックでは、xamDiagram コントロールで実行されるユーザー インタラクションのすべてのタスクの概要を説明します。

このトピックでは、xamDiagram が提供するコマンドを、メニューやボタンなどの UI 要素で使用する方法を説明します。

このトピックでは、xamDiagram コントロールが提供するコンテキスト メニューを使用する方法を説明します。

このトピックでは、xamDiagram のマウス操作とツールを構成する方法を説明します。

このトピックでは、xamDiagram コマンドに関連付けられたキーボード ショートカットを変更する方法について説明します。

このトピックでは、xamDiagram コントロールで元に戻す / やり直し操作を構成する方法を説明します。

このトピックは、xamDiagram コントロールで特定のユーザー インタラクションを制限する方法を説明します。