【问题标题】:Delete default context menu when right click in CefSharp Chromium webbrowser with WPF使用 WPF 在 CefSharp Chromium 网络浏览器中右键单击时删除默认上下文菜单
【发布时间】:2016-11-09 13:59:28
【问题描述】:

在我的 WPF 应用程序中,我正在 CefSharp 网络浏览器中加载一个 URL。当我用鼠标右键单击时,默认上下文菜单显示如下图

我的 xaml 代码是

<Window x:Class="StoneApp.WebviewWindow" WindowState="Maximized"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" 
    xmlns:local="clr-namespace:StoneApp"
    mc:Ignorable="d"
    Title="MyApp">

<DockPanel>

    <Grid x:Name="mygrid">
        <cefSharp:ChromiumWebBrowser x:Name="my_webview" IsBrowserInitializedChanged ="InitializeBrowser" Grid.Row="0" MouseRightButtonDown="Rightbtn_MouseDown"/>
    </Grid>

</DockPanel>

</Window>

我的 xaml.cs 代码是

  public WebviewWindow(string webresponse)
    {
        InitializeComponent();
        this.webresponse = webresponse;
    }

    private void InitializeBrowser(object sender, DependencyPropertyChangedEventArgs e)
    {
        my_webview.Load(webresponse);
    }

    private void Rightbtn_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.RightButton == MouseButtonState.Pressed)
        {
            e.Handled = false;
        }
    }

当我右键单击时,我也无法调用“Rightbtn_MouseDown”函数。所以我的问题是我想在右键单击网络浏览器视图时删除/隐藏默认上下文菜单。

【问题讨论】:

    标签: wpf xamarin wpf-controls cefsharp


    【解决方案1】:

    您只需覆盖默认的IContextMenuHandler

    webView.MenuHandler = new MenuHandler();
    
    internal class MenuHandler : IContextMenuHandler
    {
        public bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
        {
            return false;
        }
    
        public void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
        {
            model.Clear();
        }
    }
    

    您可以在此处阅读更多信息:https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Wpf.Example/Handlers/MenuHandler.cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2014-06-15
      • 2012-04-19
      • 1970-01-01
      相关资源
      最近更新 更多