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

C# 构建MVVM 3D编辑器应用程序->;获取鼠标位置?,c#,wpf,xaml,mvvm,direct3d,C#,Wpf,Xaml,Mvvm,Direct3d,在我的3d编辑器应用程序中,我希望能够单击并移动场景的实体(网格、灯光、摄影机等)。要做到这一点,我设想我需要获得相对于Direct3d视图的当前鼠标位置,并以某种方式将其提供给我的ViewModel。考虑到我的应用程序是用MVVM模式构建的,我该怎么做呢 附加信息:Direct3D渲染器来自C++ DLL,我们使用HWNDHOST将其放在WPF应用程序中。它有一个WndProc,我想我可以用它来处理那里的鼠标消息,但如果可能的话,我宁愿避免使用它 谢谢 您可以使用 Mouse.Position

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

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


谢谢

您可以使用

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

如果这还不够好,您可以使用Win32调用。

您可以使用

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

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

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

b:MouseBehavior.LeftClick="{Binding DoSomeActionCommand}" 
其中MouseBehavior接收控件并在其上设置鼠标事件


它对我很有效。

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

b:MouseBehavior.LeftClick="{Binding DoSomeActionCommand}" 
其中MouseBehavior接收控件并在其上设置鼠标事件

它对我很有效