2009-05-28 16 views
2

在我的3D编辑器应用程序中,我希望能够点击并移动场景的实体(网格,灯光,相机等)。要做到这一点,我想我需要获得相对于我的Direct3d视图的当前鼠标位置,并以某种方式将其提供给我的ViewModel。考虑到我的应用程序是用MVVM模式构建的,我该如何去做呢?构建MVVM 3D编辑器应用程序 - >获取鼠标位置?

附加信息:Direct3d渲染器来自C++ DLL,我们使用HwndHost将其放置在WPF应用程序中。它有一个WndProc,我想我可以用它来处理鼠标消息,但是我宁愿尽可能避免它。

谢谢!

回答

1

我找到的最好的解决方法是使用一个附加行为。在作为给HwndHost我设置附加属性中的占位符,像

b:MouseBehavior.LeftClick="{Binding DoSomeActionCommand}" 

其中MouseBehavior接收控制,并设置鼠标事件就可以了控制。

它适用于我。

-1

你可以得到鼠标位置

Mouse.Position(RelativeToObject); // get the mouse pos relative to an object 
Mouse.Position(null); // get the mouse pos relative to the whole screen 

如果那还不够好,你可以使用Win32调用。