2009-03-04 10 views

答えて

3

Silverlightでドラッグアンドドロップで達成したいことを正確に説明できますか?このページへのリンクにリンクされている問題の一番上の答え:これは、ソースとサンプルプロジェクトが含まれてい http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/DragAndDropTest/

ドラッグ&ドロップを実装して(偶然、私はSilverlight 2のベータ1のために作られたサンプルに基づいて: - ))。このコードはあなたのニーズに適していませんか?

EDIT:ドラッグの 基本骨格と実装をドロップするには、次のようになります。

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 /下のハンドラを追加します。

MouseMoveイベントハンドラで、ドラッグ中に実行するコードを追加します。 Canvas.TopとCanvas.Leftをマウスの位置に合わせて変更します。イベントの引数からマウスの位置を取得できます。おそらく、要素コンテナに相対的な位置を取得する必要があります。

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

これはあなたの質問にお答えしますか?

+0

あなたの答えに感謝します。私は、コードに掘り下げるのではなく、銀色で包括的なドラッグアンドドロップソリューションを実装するための、多くの高水準の手順をリストアップしてくれた人がほしいと思っていました。 – JohnIdol

+0

私は答えを編集してより多くの情報を追加しました。 – KeithMahoney

0

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

関連する問題