管理一个可以搬东西的空间(Silverlight)

时间:2011-01-23 23:05:08

标签: silverlight drag-and-drop pan

我正在考虑在我的应用程序中管理“工作区”的更好方法,用户可以在这个空间中移动东西,例如可以平移。

让我们想象一下,我有我的应用程序界面,周围有一些按钮,树视图等,中间是一个带有一些小部件的画布,用户可以移动和使用它,他可以平移这个空间来移动它。

对于pan,我正在考虑处理此空间中的MouseLeftButtonDown(将布尔“UserMoving”切换为true),并在MouseMove上应用于转换到空间(来自2个事件之间的Delta) ,直到我检测到MouseLeftButtonUp,才知道他已经停止(UserMoving为false)。问题是,如果用户“鼠标左键”不在空间本身(Canvas)上,我将永远不会知道他已经释放了鼠标。什么是最好的方法来管理他可以在应用程序中的任何地方释放平移(或小部件的拖放)?

有人已经管理过这样的事情并且可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您应该在鼠标按下时调用画布上的UIElement.CaptureMouse。这将使画布接收鼠标事件,即使用户移动到其区域之外。

点击鼠标时,请拨打ReleaseMouseCapture