Hello.

je tente de manipuler un joystick avec l'api directX.
Pour ce faire, j'ai besoin d'un pointeur sur ma fenêtre, obtenu comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
            System.Windows.Controls.Control w = null;
 
            w = vuePTZ.Parent as System.Windows.Controls.Control;
            while ((w is System.Windows.Window) == false)
            {
                w = w.Parent as System.Windows.Controls.Control;
            }
 
            if (w == null)
                throw new Exception("Impossible d'obtenir la window principale");
 
            joystickDevice.SetCooperativeLevel(new WindowInteropHelper(w as System.Windows.Window).Handle, CooperativeLevelFlags.Background | CooperativeLevelFlags.NonExclusive);
Le code ce cette classe est appelé dans le constructeur d'un UserControl, qui se passe lui-même en référence (mon vuePTZ). Or il apparait que la propriété Parent de ce Control est défini à null, (alors qu'il est imbriqué dans un autre Contrôle, imbriqué dans la window).

Mes questions :
- Pourquoi est-il à null, WPF ne l'initialise pas ?
- Y a-t-il un moyen moyen de récupérer un Handle sur la fenêtre ? Sinon comment être sûr que l'on aura la propriété Parent renseignée ?

Merci