3

私はsilverlightを初めて使用します-チュートリアルとすべてを見てきましたが、探しているのは、ドラッグアンドドロップを実装するために必要な高レベルの手順と、アイデアを得るための少しの(疑似)コードです。

どんな助けでも大歓迎です!

4

2 に答える 2

3

Silverlightでドラッグアンドドロップを使用して何を達成したいのかを正確に説明していただけますか?このページへのリンクにリンクした質問のトップアンサー: http ://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragAndDropTest/

これには、ドラッグアンドドロップを実装するソースを含むサンプルプロジェクトが含まれています(偶然にも、Silverlight 2のベータ1用に作成したサンプルに基づいています:-))。このコードはあなたのニーズに適していないのはどうですか?

編集:ドラッグアンドドロップ実装の基本的なスケルトンは次のようになります。

bool isDragging = false;

void elementMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (element.CaptureMouse())
    {
        isDragging = true;
        element.MouseMove += elementMouseMove;
        //start drag code goes here
    }
}

void elementMouseMove(object sender, MouseEventArgs e)
{
    //Drag code goes here
}

void element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (isDragging)
    {
        element.ReleaseMouseCapture();
        isDragging = false;
        element.MouseMove -= elementMouseMove;

        //Drop code goes here
    }
}

ドラッグする要素にMouseLeftButtonUp/Downハンドラーを追加します。

MouseMoveイベントハンドラーで、ドラッグ中に実行するコードを追加します。たとえば、Canvas.TopとCanvas.Leftをマウスの位置に一致するように変更します。イベント引数からマウスの位置を取得できます。おそらく、要素コンテナを基準にした位置を取得する必要があります。

MouseLeftButtonUpイベントハンドラーで、「ドロップ」が発生したときに実行されるコードを追加します。たとえば、要素をドラッグできる「ごみ箱」を実装したい場合があります。その場合、ドロップの時点でマウスの下にある要素を知りたいと思うでしょう。VisualTreeHelper.FindElementsAtHostCoordinatesを使用して、アプリケーションのルートを基準にしたマウスの位置を渡すことができます(e.GetPosition(null)を使用)。次に、「ごみ箱」要素がFindElementsInHostCoordinatesによって返された場合、適切なアクションを実行することがわかっています。

これはあなたの質問に答えるのに役立ちますか?

于 2009-03-05T03:45:24.463 に答える
0

mouseleftbuttonupではなく、キャプチャを開始するはずのMouseLeftButtonDownではありませんか?

于 2009-07-10T04:04:21.023 に答える