Передача текущей позиции мыши в ViewModel? - PullRequest
3 голосов
/ 28 мая 2009

В моем приложении MVVM у меня есть окно визуализации Direct3d, которое показывает кучу трехмерных сеток в сцене. В этом окне рендеринга я хочу иметь возможность щелкнуть одну из этих трехмерных сеток в сцене и перемещать ее, следуя за курсором мыши. Это типичный трехмерный редактор, перемещающий сетку по экранному пространству. Поэтому мне нужно иметь возможность получить текущую позицию мыши, предпочтительно относительно окна визуализации Direct3d.

Какой способ сделать это?

Спасибо!

Редактировать: изменение формулировки, поскольку оно было слишком общим и приводило к путанице.

Ответы [ 3 ]

2 голосов
/ 01 июня 2009

InputManager.Current.PrimaryMouseDevice, вероятно, является вашей лучшей ставкой.

Оберните его в интерфейс, который предоставляет необходимую вам информацию, и внедрите ее, используя вашу любимую среду IoC.

1 голос
/ 28 мая 2009

Я думаю, что это неправильный способ думать о паттерне MVVM. Позвольте мне проиллюстрировать это, слегка изменив свой вопрос.

Если у вас есть какой-то пользовательский элемент управления для редактирования текста, как лучше всего передавать события нажатия клавиш в ViewModel?

Не лучше ли связать данные с элементом управления, а затем обновить данные через привязку при манипуляциях с элементом управления?

Итак, у вас есть список объектов, которые вы хотите показать в 3D виде? Передайте объекты такими, какие они есть, и используйте привязку шаблона для привязки каждого типа объекта к шаблону данных, описывающему 3D-объект, который включает в себя привязки к элементам X, Y, Z в объекте.

0 голосов
/ 28 мая 2009

Я бы объявил делегата в viewmodel и сделал бы его зарегистрированным. таким образом viewModel не нужно знать о представлении и его легко выполнить модульным тестом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...