构建MVVM 3D编辑器应用程序 - >获得鼠标位置?

时间:2009-05-28 13:11:23

标签: c# wpf xaml mvvm direct3d

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

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

谢谢!

3 个答案:

答案 0 :(得分:1)

我找到的最佳解决方案是使用附加行为。在作为HwndHost占位符的控件中,我设置了一个附加属性,如

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

其中MouseBehavior接收控件并在其上设置鼠标事件。

它适用于我。

答案 1 :(得分:0)

答案 2 :(得分:-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调用。