[WPF][Résolu] Problème d'ergonomie

Bonjour la zone !

je reviens vers vous car j’ai un souci d’ergonomie :

j’ai une listbox (listbnox1). J’aimerai que lorsque je passe sur les listboxitems de listbox1, une autre listbox (listbox2) s’affiche.
Je voudrai également que lorsque je quitte la listbox1, listBox2 disparaisse. Le problème c’est que lorsque je veux aller sur listbox2 pour sélectionner un item, listbox2 disparait (puisque je sors de listbox1).

Comment résoudre ce problème ? avec HitTestResult ? J’ai essayé en voulant tester si la souris est sur listbox1 sur l’événement MouseLeave de ListBox1 :

[code]private void ListBox1_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
// Retrieve the coordinate of the mouse position.
Point pt = e.GetPosition((UIElement)sender);

// Perform the hit test against a given portion of the visual object tree.
HitTestResult result = VisualTreeHelper.HitTest(ListBox1, pt);

if (result == null)
{
	ListBox2.Visibility = System.Windows.Visibility.Collapsed;
}

}[/code]

Mais ça ne fonctionne pas :s
Auriez-vous une idée ??? J’ai glissé une pièce jointe si je me suis mal exprimé

Tu mets tes Listbox dans un meme grid sans background, et tu fais la prise en charge des MouseLeave / MouseEnter sur le grid plutot que sur les ListBox et you’re ready to rule the world

Merci, je teste tout de suite !!!

Le fait que le fond soit transparent fait que ça ne fonctionne pas. Si je met une couleur au fond de mon conteneur, j’ai le comportement attendu mais sinon non :smiley:

Si tes ListBox sont colles, tu n’as pas besoin de Background a ton grid. Sinon il faut que ton background soit transparent

J’ai fait un petit exemple en pièce jointe si tu passes relativement vite entre les 2 listbox, la 2è reste affichée. En revanche si on passe plus lentement entre la 1ère et la 2è listbox alors la 2è. si le dockpanel (parentElement dans l’exemple) n’est pas transparent il n’y a pas ce comportement.

Pièce jointe : http://cid-9d12ef397cb411bf.skydrive.live…pplication1.zip

Yep, normal, C’est du au fait qu’il y a un espace entre les ListBox

Donc il n’y a rien à faire ?

Ok donc ce que j’ai fait c’est qu’au lieu de mettre un BorderBrush à Transparent je l’ai mis à “#01000000” sur ListBox1 et ça fonctionne nickel.