2 votes

Comment créer un bouton sur le contrôle WebView2?

J'ai le contrôle WebView2 dans mon application WPF. Je veux créer un bouton de manière programmative à la position de mon curseur.

Button ks = new Button();
ks.Width = 25;
ks.Height = 15;
ks.Content = "Ajouter";
ks.Background = Brushes.Red;
ks.Margin = new Thickness(k.X, k.Y, 0, 0);

grid.Children.Add(ks);

Mais il semble que mon bouton soit créé sous le contrôle WebView2, et je suis incapable de le voir.

Comment puis-je créer un bouton au-dessus de mon contrôle WebView2?

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' ?

2voto

Rekshino Points 2612

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 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X