无法在CefSharp WPF上启用触摸滚动

时间:2018-09-06 15:32:16

标签: c# wpf touch cefsharp

我在加载普通网页的WPF项目中使用CefSharp。 我的问题是,使用触摸屏,我可以单击任何链接或按钮,但不能滚动页面。 任何带有滚动条的网页都存在该问题。

我在Windows 10上使用带有WPF的cefsharp / 65 X86。

在github项目页面(https://github.com/cefsharp/CefSharp/issues/228#issuecomment-318976804)上进行了一些讨论之后,我添加了以下方法:

    private void browser_TouchMove(object sender, TouchEventArgs e)
    {
        if (host != null && IsMouseDown)
        {
            TouchPoint t = e.GetTouchPoint(this);
            Point p = t.Position;

            if (!LastSavedPoint.HasValue)
                LastSavedPoint = p;

            int x = (int)p.X;
            int y = (int)p.Y;
            int oldX = (int)LastSavedPoint.Value.X;
            int oldy = (int)LastSavedPoint.Value.Y;

            host.SendMouseWheelEvent(x, y, 0, y - oldy, CefEventFlags.MiddleMouseButton);

            LastSavedPoint = p; //Store the last Point for reference
        }
    }

    void browser_TouchDown(object sender, TouchEventArgs e)
    {
        if (host == null)
        {
            IWebBrowser host2 = browser; // **your Browser's  Instance** 
            IBrowser bworser = host2.GetBrowser();
            host = bworser.GetHost(); // Get host from Browser
        }
        IsMouseDown = true;
        // this.Cursor = System.Windows.Input.Cursors.None;
    }

    private void browser_TouchLeave(object sender, TouchEventArgs e)
    {
        IsMouseDown = false;
        LastSavedPoint = null;
    }

    void browser_TouchUp(object sender, TouchEventArgs e)
    {
        IsMouseDown = false;
        LastSavedPoint = null;
    }
引用这些变量的

    bool IsMouseDown = false;
    Point? LastSavedPoint = null;
    IBrowserHost host;

将所有内容放在一起

    browser.TouchMove += browser_TouchMove;
    browser.TouchDown += browser_TouchDown;
    browser.TouchLeave += browser_TouchLeave;
    browser.TouchUp += browser_TouchUp;

其中 browser 是mainwindow.xaml上cefsharp组件的名称

在App.xaml中

    settings.CefCommandLineArgs.Add("touch-events", "1");
    settings.MultiThreadedMessageLoop = false;

此解决方案和其他任何建议的解决方案均无效,请帮助我解决此问题,谢谢。

0 个答案:

没有答案