如何在WebView2控件上创建按钮?

18 浏览
0 Comments

如何在WebView2控件上创建按钮?

我在我的WPF应用程序中有一个WebView2控件。

我想在光标位置编程创建一个按钮。

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

但是似乎我的按钮是在WebView2控件下创建的,我无法看到它。

如何在我的WebView2控件上创建一个按钮?

0
0 Comments

在WebView2控件上创建按钮需要一些技巧,但是是可行的。我将使用XAML来实现,但你可以根据需要进行重写(创建按钮或者仅切换可见性)。基本思路是将Button包装在一个Popup中。Popup不属于可视对象,需要单独处理。

为了让它看起来像一个普通的按钮,你需要处理一些特殊情况,如最小化、最大化、移动、取消激活窗口等。因此,对于窗口,需要为ActivatedDeactivatedStateChangedLocationChanged事件附加事件处理程序(你也可以创建一个行为来处理所有的代码)。

PopUp的移动参考了这里的方法:How can I move a WPF Popup when its anchor element moves?

private void Window_Activated(object sender, EventArgs e)
{
    // Dispatcher用于使窗口先改变大小
    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;
}


    

0