2

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

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

谢谢!

4

3 回答 3

1

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

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

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

这对我来说很有用。

于 2009-07-15T12:57:40.557 回答
0

InputManager.Current.PrimaryMouseDevice 可能是您最好的选择。

于 2009-06-01T14:20:13.017 回答
-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 调用。

于 2009-05-28T13:49:03.360 回答