C'est un peu délicat, mais possible. Je le ferai en XAML, mais vous pouvez le réécrire comme vous avez besoin (créer un bouton ou simplement basculer la visibilité).
L'idée principale est d'envelopper le Button
avec un PopUp
. Le pop-up n'appartient pas au visuel et est géré séparément.
Pour avoir l'impression que c'est un simple bouton, vous devrez gérer certains cas particuliers comme la minimisation, la maximisation, le déplacement, la désactivation de la fenêtre.
Ainsi, pour la fenêtre, attachez des gestionnaires d'événements pour les événements Activated
, Deactivated
, StateChanged
et LocationChanged
(vous pouvez également créer un comportement pour tous les codes derrière pour le gérer en XAML).
private void Window_Activated(object sender, EventArgs e)
{
//Dispatcher dont nous avons besoin pour que la fenêtre change d'abord de taille
Dispatcher.BeginInvoke((Action)(() => {
popUpOver.IsOpen = true;
}));
}
private void Window_Deactivated(object sender, EventArgs e)
{
popUpOver.IsOpen = false;
}
private void Window_StateChanged(object sender, EventArgs e)
{
popUpOver.IsOpen = this.WindowState != WindowState.Minimized;
}
private void Window_LocationChanged(object sender, EventArgs e)
{
var offset = popUpOver.HorizontalOffset;
popUpOver.HorizontalOffset = offset + 1;
popUpOver.HorizontalOffset = offset;
}
Le déplacement du PopUp a été inspiré par : Comment puis-je déplacer un Popup WPF lorsque son élément d'ancrage se déplace ?
1 votes
Vous ne pouvez pas. WebView2 n'est pas un composant pur de WPF. Il contient des composants COM en lui. Ainsi, il n'est pas compatible pour fonctionner comme les composants habituels de WPF.
0 votes
Avez-vous essayé 'SetZIndex' ?