2009-05-27 49 views
3

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

这是什么方法?

谢谢!

编辑:改变措辞,因为它太泛化,导致混乱。

回答

0

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

+0

嗨阿里!我对“注册”部分有些模糊。那会不同于通常的“{Binding MyMouseMoveCommand}”东西吗?如果它是一个委托,它是否仍然传递给它的参数? – djcouchycouch 2009-05-27 21:54:16

+0

嗨史蒂夫,我来自银光一面,所以我们没有在那里指挥,我正在考虑一个类型的行动或类似的代表... – 2009-05-27 23:04:45

1

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

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

将数据绑定到控件,然后通过绑定更新数据是否更好?

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

相关问题