Silverlightでドラッグアンドドロップを実装するのは本当に簡単ですか?
-
03-07-2019 - |
質問
silverlightの初心者です-チュートリアルとすべて、私が探しているのは、ドラッグ&ドロップを実装するために必要な高レベルの手順と、アイデアを得るために多分少しの(擬似)コードです。
ご協力ありがとうございます
解決
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によって要素が返されます。
これはあなたの質問に答えますか?
他のヒント
mouseLeftButtonDownは、mouseleftbuttonupではなく、キャプチャを開始することになっている場所ですか?