0

LibraryBar を使用して、関係を持ついくつかの項目を表示します。アイテム間の関係が異なるため、複数のコンテナを持っています。LibraryBar に対して AllowDrop が true に設定されている場合のデフォルト設定として、すべての要素を LibraryBar にドラッグすることが可能であり、アイテムはドロップされたコレクションに追加されます。

今、私はそれを望んでいません。ある LibraryBar から別の LibraryBar にアイテムをドラッグできるようにしたくありません。ただし、いくつかの TagVisualizations を LibraryBar にドラッグしたいので、AllowDrop を false に設定することはできません。

だから私はDropEventsを処理する私のメソッドで定義しました:

public void OnTargetDrop(object sender, SurfaceDragDropEventArgs e)
        {
            //only if TagVisualization
            if (e.Cursor.Data is Image)
            {
                ((sender as LibraryBar).Tag as ISourceFile).unexpand();
                e.Handled = true;
            }
            else
            {
                //TODO: cancel Drag&Drop
            }
        }

ご覧のとおり、カーソルのデータが画像の場合にのみドロップを許可します (したがって、TagVisualization になりました)。これは機能し、別の LibraryBar からこの LibraryBar にアイテムをドロップすることはできなくなりました。ただし、項目が L​​ibraryBar にドラッグされた場合に再生されるアニメーションは引き続き再生されます。特定のタイプでこのアニメーションを無効にするにはどうすればよいですか?

4

1 に答える 1

1

DragCompleted イベントのイベント ハンドラーを追加します。除外するすべてのタイプに対して、handled equal を true に設定します。DragCompletedEventArgs には Cursor.Data プロパティもあります。

于 2010-11-15T22:40:46.173 に答える