J'ai créé un contrôle de test très simple qui a un Rectangle
sur une toile (dans d'autres conteneurs, mais sans conséquence). Le Rectangle
dispose de gestionnaires d'événements pour la souris, le déplacement de la souris et la souris. Si je capture la souris dans l'événement MouseLeftButtonDown du rectangle, je ne reçois pas un événement MouseLeftButtonUp correspondant.Perte des événements de la souris Silverlight après la capture de la souris?
Certains code:
private void rect1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (_captured = CaptureMouse())
{
_offset = new Point(Canvas.GetLeft(rect1), Canvas.GetTop(rect1));
_origin = e.GetPosition(RootCanvas);
e.Handled = true;
}
}
private void rect1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_captured)
{
ReleaseMouseCapture();
_captured = false;
e.Handled = true;
}
}
J'attaché des gestionnaires d'événements pour les éléments de conteneurs et, juste pour se assurer un d'entre eux ne recevait pas l'événement de la souris en quelque sorte, mais aucun d'entre eux étaient. Y a-t-il une attente dans Silverlight que je n'ai pas encore apprise?
J'ai remarqué un problème similaire dans une application WPF que je suis en train de développer, mais je l'ai ignoré car j'essayais de capturer la souris lorsque les autres boutons de la souris étaient pressés. Ayant réalisé que cela ne fonctionnait pas pour autre chose que le bouton gauche, j'ai abandonné cette approche et je n'ai pas étudié le problème plus avant. – ChrisF