2009-05-27 32 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項目。

相關問題