4

次の形式の UserControl があります。

<UserControl>   
    <Grid>         
          <!-- Content Here-->    
      <StackPanel>   <!-- I want this element to be draggable within the usercontrol. -->    
         <Label Name = "Header" />  
         <Button />
         <Button />
         <Button />             
         </StackPanel>    
   <Grid>             
</UserControl>

私の最終結果は、ドラッグできるボタン(ユーザーコントロールの一部)を備えたコントロールを持つことです..?つまり、移動可能です... UserControl内

Thumb について読んだことがありますが、その使用方法がわかりません...アイデアや例があれば素晴らしいと思います。ありがとう!

4

6 に答える 6

11

それを行う非常に簡単な方法は、マウスイベントを使用することです

まず、ユーザーがドラッグした場所に応じて簡単に配置できるようにStackPanel、でラップしますCanvas

MouseDown次に、とMouseUpイベントをに追加しますStackPanelStackPanelマウス イベントを受け取るには、背景色を指定する必要がある場合があります。

イベントでは、イベント ハンドラを にMouseDownアタッチし、パネルにマウスをキャプチャさせて、すべてのマウス イベントが によって処理されるようにします。MouseMoveStackPanelStackPanel

イベントで、MouseUpイベントをデタッチし、MouseMoveマウス キャプチャを解放します。

MouseMoveイベントでは、現在のマウスの位置に基づいて、パネルの および プロパティを変更しますCanvas.Top。マウスが の外側にあるかCanvas.Leftどうかを判断するために、ここでチェックする必要があります。UserControlStackPanel

それだけです、非常に基本的なドラッグドロップです:)

于 2012-09-07T16:11:18.393 に答える
0

One way would be to handle the mouseclick on the button and change its position while moving the mouse.

So the steps will be:

  1. Add a handler to the button. Mouseclick for example (or mousedown)
  2. When you receive a mouseclick add a handler to mousemove.
  3. Check the movement of the mouse and change the position of the button
  4. Remove the handler after releasing the mouse button.
于 2012-09-07T14:51:27.223 に答える
0

I don't know of any specific method but intuitively, you may add an event handler to drag method of the control you want to move, and in that method, you may render the control to a bitmap, make that bitmap follow your mouse pointer, and hide the original control. When dropped (mouse released), it should simply set the original control's coordinates to mouse coordinates, dispose of the bitmap, and re-enable the visibility of the control.

于 2012-09-07T14:51:42.380 に答える
0

これについては、MSDN やその他の場所で利用できるチュートリアルがいくつかあります。WPF のドラッグ アンド ドロップについては、次のリンクを試してください。

WPF ドラッグ アンド ドロップ

于 2012-09-07T14:54:46.663 に答える
0

avalondock プロジェクトにチャンスを与えるべきです。

これにより、Visual Studio のような豊富なレイアウト機能 (フローティング、ドッキングなど) を作成できます。

私はこれがあなたを助けると確信しています.

于 2012-09-07T14:56:27.097 に答える