Je souhaite générer une infobulle dynamiquement, car l'infobulle doit contenir une grille avec un nombre dynamique de colonnes.wpf - Infobulle complexe complexe
Comment faire cela?
Je souhaite générer une infobulle dynamiquement, car l'infobulle doit contenir une grille avec un nombre dynamique de colonnes.wpf - Infobulle complexe complexe
Comment faire cela?
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