2009-05-28 14 views
2

Dans mon application éditeur 3D, je veux pouvoir cliquer et déplacer les entités d'une scène (maillages, lumières, caméras, etc.). Pour ce faire, j'imagine que j'ai besoin d'obtenir la position actuelle de la souris par rapport à ma vue Direct3d et de la donner en quelque sorte à mon ViewModel. Comment ferais-je cela, étant donné que mon application est construite avec le modèle MVVM?Construction d'une application MVVM 3D Editor -> Obtenir la position de la souris?

Informations supplémentaires: Le moteur de rendu Direct3d provient d'une DLL C++ et nous utilisons un HwndHost pour le placer dans notre application WPF. Il a un WndProc que j'imagine que je pourrais utiliser pour gérer les messages de la souris, mais je préfère l'éviter si possible.

Merci!

Répondre

1

La meilleure solution que je trouve est d'utiliser un comportement attaché. Dans le contrôle qui sert de l'espace réservé à l'HwndHost je mis une propriété attachée, comme

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

où MouseBehavior reçoit le contrôle et définit les événements de la souris sur elle.

Cela fonctionne bien pour moi.

-1

vous pouvez obtenir la position de la souris avec

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

si c'est pas assez bon, vous pouvez utiliser des appels Win32.