我有一个 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
中,以便根据用户拖动它的位置轻松定位
接下来,将 MouseDown
和 MouseUp
事件添加到 StackPanel
。您可能需要为您的 StackPanel
提供背景颜色,以便它接收鼠标事件。
在 MouseDown
事件中,将 MouseMove
事件处理程序附加到 StackPanel
并让面板 capture the mouse所以所有鼠标事件都将由 StackPanel
处理。
在 MouseUp
事件中,分离 MouseMove
事件并释放鼠标捕获。
在 MouseMove
事件中,根据当前鼠标位置更改面板的 Canvas.Top
和 Canvas.Left
属性。您需要在此处进行检查以确定鼠标是否也在 UserControl
之外,以便 StackPanel
无法被拖出屏幕。
就是这样,非常基本的拖放:)
关于c# - 在 wpf 中制作 StackPanel 及其内容 "draggable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320406/