2010-11-16 10 views

Répondre

1

Vous pouvez créer un nouveau menu contextuel et simuler l'info-bulle en tant que fenêtre contextuelle.

Vous avez juste à gérer ces deux événements: MouseEnter, MouseLeave.

sur la souris Entrez, vous pouvez avoir une minuterie pour ouvrir votre pop-up après x secondes:

private void Canvas_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { 
    timer = new Timer(500); 
    timer.Elapsed += timer_Elapsed; 
    timer.Enabled = true; 
} 

et de la souris vous laisse annuler la minuterie:

private void Canvas_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { 
    timer.Elapsed -= timer_Elapsed; 
    timer = null; 
} 

lorsque le délai est écoulé, vous ll utiliser dispatcher pour ouvrir le menu contextuel:

void timer_Elapsed(object sender, ElapsedEventArgs e) { 
    Dispatcher.BeginInvoke(DispatcherPriority.Normal, new oolDelegate(OpenTooltip), true); 
} 

la méthode infobulle Open ouvrir le menu contextuel:

public void OpenTooltip(bool isOpen) { 
    popup.IsOpen = isOpen; 
    popup.LostFocus += popup_LostFocus; 
} 

Et vous pouvez également la fermer quand la fenêtre contextuelle perdu le focus

Hope this peut aider