我现在正在UserControl
使用下面的代码(这是众所周知和使用的)使我可以拖动。此UserControl
外观与MessageBox
(灰色和蓝色矩形)类似,其任务是使此UserControl
只能从蓝色矩形中拖动,就像任何{ {1}},而不是现在可以从里面的任何地方拖拽它!
有关如何做到这一点的任何建议?提前谢谢!
位于用于拖动MessageBox
UserControl
答案 0 :(得分:0)
我想到的两个基本选项:
在UserControl中,使矩形成为边框(或其他控件),并将事件放在此边框上,而不是放在UserControl上。
如果出于某种原因,您确实希望事件在UserControl上,请在矩形的位置放置一个隐藏边框,并且只有当鼠标位于此边框上时才进行拖动。
答案 1 :(得分:0)
解决此问题的两种方法,实际上使用不同语法的方法相同:
通过代码 - 在构造函数中,而不是
MouseLeftButtonDown += new MouseButtonEventHandler(root_MouseLeftButtonDown);
MouseLeftButtonUp += new MouseButtonEventHandler(root_MouseLeftButtonUp);
MouseMove += new MouseEventHandler(root_MouseMove);
使用
myBlueRect.MouseLeftButtonDown +=
new MouseButtonEventHandler(root_MouseLeftButtonDown);`
myBlueRect.MouseLeftButtonUp +=
new MouseButtonEventHandler(root_MouseLeftButtonUp);
myBlueRect.MouseMove += new MouseEventHandler(root_MouseMove);
通过XAML - 在您想要放置的相关元素的标记中(假设它是Grid
):
<Grid x:Name="myBlueRect"
MouseLeftButtonDown="root_MouseLeftButtonDown"
MouseLeftButtonUp="root_MouseLeftButtonUp"
MouseMove="root_MouseMove"
.../>