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

3
在我的MVVM应用程序中,我有一个Direct3d渲染窗口,显示场景中的一堆3D网格。在那个渲染窗口中,我想能够点击场景中的其中一个3D网格并移动它,使其跟随鼠标光标移动。这是典型的3D编辑器操作,将网格沿着屏幕空间移动。因此,我需要能够获取当前鼠标位置,最好是相对于Direct3d渲染窗口的位置。
有什么方法可以做到这一点吗?
谢谢!
编辑:更改措辞,因为它过于通用,导致混淆。
3个回答

2

1

我认为这种思考MVVM模式的方式是错误的。让我稍微改变一下你的问题来说明这一点。

如果你有一个自定义文本编辑控件,最好的方法是如何将按键事件传递给ViewModel?

绑定数据到控件,然后通过绑定更新数据,当控件被操作时,这不是更好吗?

所以,你有一个要在3D视图中显示的对象列表?将对象作为它们本身传递,并使用模板绑定将每个对象类型绑定到描述3D对象的DataTemplate,其中包括对对象中X、Y、Z项的绑定。


嗨,卡梅伦! 我意识到我对我所寻找的东西的描述过于模糊和泛泛,因此我更新了它以反映我实际想要的内容 :) - djcouchycouch

0
我会在ViewModel上声明一个委托,并让View注册它。这样,ViewModel就不需要知道View的存在,也更容易进行单元测试。

嗨,Ali!我对“register”部分有些模糊。这与通常的“{Binding MyMouseMoveCommand}”不同吗?如果它是一个委托,它是否仍然会传递参数? - djcouchycouch
嗨,史蒂夫,我来自Silverlight方面,所以我们那里没有命令,我在考虑一个类型为Action<int,int>的委托或类似的东西... - Ali Shafai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接