Создание приложения MVVM 3D Editor -> Определение положения мыши? - PullRequest
2 голосов
/ 28 мая 2009

В моем приложении для трехмерного редактора я хочу иметь возможность щелкать и перемещать объекты сцены (сетки, источники света, камеры и т. Д.). Чтобы сделать это, я представляю, что мне нужно получить текущее положение мыши относительно моего представления Direct3d и каким-то образом передать его моей ViewModel. Как бы я поступил так, учитывая, что мое приложение построено с использованием шаблона MVVM?

Дополнительная информация: Средство визуализации Direct3d из библиотеки DLL C ++, и мы используем HwndHost для размещения его в нашем приложении WPF. У него есть WndProc, который, я полагаю, мог бы использовать для обработки там сообщений мыши, но я бы предпочел избегать его, если это вообще возможно.

Спасибо!

Ответы [ 3 ]

1 голос
/ 15 июля 2009

Лучшее решение, которое я нашел, это использовать прикрепленное поведение. В элементе управления, который служит заполнителем для HwndHost, я установил прикрепленное свойство, например

b:MouseBehavior.LeftClick="{Binding DoSomeActionCommand}" 

где MouseBehavior получает элемент управления и устанавливает для него события мыши.

У меня это хорошо работает.

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

Вы можете получить положение мыши с помощью

Mouse.Position( RelativeToObject ); // get the mouse pos relative to an object
Mouse.Position( null ); // get the mouse pos relative to the whole screen

если этого недостаточно, вы можете использовать вызовы Win32.

...