将当前鼠标位置传递给ViewModel?

时间:2009-05-27 21:13:04

标签: c# wpf xaml mvvm

在我的MVVM应用程序中,我有一个Direct3d渲染窗口,在窗口中显示一堆3d网格物体。在该渲染窗口中,我希望能够单击场景中的其中一个三维网格并移动它,使其跟随鼠标光标。这是典型的3D编辑器,在屏幕空间中移动网格。所以我需要能够获得当前鼠标位置,最好是相对于Direct3d渲染窗口。

这样做的方法是什么?

谢谢!

编辑:更改措辞,因为它过于通用并导致混淆。

3 个答案:

答案 0 :(得分:2)

InputManager.Current.PrimaryMouseDevice is probably your best bet.

将它包含在一个暴露所需信息的界面中,并使用您最喜欢的IoC框架注入它。

答案 1 :(得分:1)

我认为这是考虑MVVM模式的错误方法。让我通过稍微改变你的问题来说明这一点。

如果您有一些自定义文本编辑控件,那么将击键事件传递给ViewModel的最佳方法是什么?

将数据绑定到控件然后在控制操作时通过绑定更新数据会不会更好?

那么,您有一个要在3D视图中显示的对象列表?按原样传递对象,并使用模板绑定将每个对象类型绑定到描述3D对象的DataTemplate,其中包括对对象中X,Y,Z项的绑定。

答案 2 :(得分:0)

我会在viewmodel上声明一个委托,并使视图注册到它。通过这种方式,viewModel不需要知道视图,并且易于单元测试。