在Wpf中使StackPanel及其内容"可拖动"?

use*_*434 2 c# wpf xaml

我有一个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>
Run Code Online (Sandbox Code Playgroud)

我的最终结果是有一个控件可以拖动按钮(用户控件的一部分)..?也就是说,在UserControl中可移动....

我读过关于Thumb但我不确定如何使用它...任何想法或例子都会很棒.谢谢!

Rac*_*hel 10

一个非常简单的方法是使用鼠标事件

首先,将其包裹起来StackPanel,Canvas以便根据用户拖动它的位置轻松定位

接下来,添加MouseDownMouseUp事件StackPanel.您可能需要为其提供StackPanel背景颜色以接收鼠标事件.

在这种情况MouseDown下,将MouseMove事件处理程序附加到StackPanel并让面板捕获鼠标,以便所有鼠标事件都由处理StackPanel.

在这种情况MouseUp下,分离MouseMove事件并释放鼠标捕获.

在这种情况MouseMove下,根据当前鼠标位置更改面板的Canvas.TopCanvas.Left属性.你需要在这里检查以确定鼠标是否在外面,UserControl所以StackPanel无法将其拖出屏幕.

就是这样,非常基本的拖拽:)