c# - 在 wpf 中制作 StackPanel 及其内容 "draggable"?

标签 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>

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

我读过有关 Thumb 的内容,但我不确定如何使用它...任何想法或示例都很好。谢谢!

最佳答案

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

首先,将您的 StackPanel 包裹在 Canvas 中,以便根据用户拖动它的位置轻松定位

接下来,将 MouseDownMouseUp 事件添加到 StackPanel。您可能需要为您的 StackPanel 提供背景颜色,以便它接收鼠标事件。

MouseDown 事件中,将 MouseMove 事件处理程序附加到 StackPanel 并让面板 capture the mouse所以所有鼠标事件都将由 StackPanel 处理。

MouseUp 事件中,分离 MouseMove 事件并释放鼠标捕获。

MouseMove 事件中,根据当前鼠标位置更改面板的 Canvas.TopCanvas.Left 属性。您需要在此处进行检查以确定鼠标是否也在 UserControl 之外,以便 StackPanel 无法被拖出屏幕。

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

关于c# - 在 wpf 中制作 StackPanel 及其内容 "draggable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320406/

相关文章:

c# - CaSTLe Windsor - 按惯例注册

c# - WebClient.UploadValues 的 UTF32?

C# Datagridview 复选框值

c# - 使用 Moq,我如何验证一个对象的所有属性都被复制了?

c# - 当用户单击带有 MVVM 的关闭按钮时,如何在 WPF 对话框中取消等待?

c# - 寻找类似于WPF轮播的图像旋转器

c# - : the attachable property triggers was not found in style in a Grid Application如何解决

css - WinForms 和 XAML 不能受益于与 CSS 相同的逻辑吗?

c# - 关于在 winphone 8.1 RT 中在 ContentDialogResult 中换行文本

c# - 创建基本用户控件