左键单击不适用于在WPF WebBrowser中托管的Web画布

时间:2016-04-21 15:51:40

标签: wpf canvas vis.js

我尝试使用WebBrowser在我的WPF中显示vis.js网页,页面成功显示但我可以左键单击画布中的任何项目。

鼠标缩放在画布内按预期工作。

我写了一个简单的项目只包含2个文件:

MainWindow.xaml:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WebBrowser x:Name="webBrowser"></WebBrowser>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            webBrowser.Navigate("http://visjs.org/examples/network/other/configuration.html");
        }
    }
}

注意:我在注册表中添加了以下密钥,因此我的WPF流程将使用IE11:

  

键名:HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Internet   资源管理器\ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION \ processName.exe   键入:REG_DWORD值数据:11000(十进制)

1 个答案:

答案 0 :(得分:1)

我不会直接回答你的问题,但我会根据自己的经验给你一些建议,那就是:永远不要使用默认的wpf WebBrowser来做任何非常严重的事情。我尝试多次使用它以用于许多不同的项目,并且总是得到一些showstopper问题,没有例外。当然,这与IE11(10,9 - 我试过很多次,就像我说的那样)仿真一样。

以你的情况为例。不仅画布点击不起作用 - 整个页面被完全破坏。如果您尝试选择颜色,则滑块会搞砸 - 再次点击不起作用,以及此单页上的更多问题。

所以,不要使用wpf WebBrowser,只需使用真正的浏览器,例如Chromium。我个人更喜欢CefSharp,其中wpf与chrome绑定。只需安装他们的nuget包(CefSharp.WPF),然后:

<Window x:Class="WpfApplication2.MainWindow"
    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:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <wpf:ChromiumWebBrowser x:Name="webBrowser"/>
</Grid>
</Window>

InitializeComponent();
webBrowser.Address = "http://visjs.org/examples/network/other/configuration.html";

你的页面只是显示它应该。 Canvas点击工作,没有样式被破坏,颜色选择器工作。除此之外,cefsharp浏览器控件很多更灵活。您可以轻松地从javascript调用\,拦截几乎每个事件(资源加载,重定向),您可以禁用javascript \ images,甚至拦截请求并提供完全不同的数据。并且无需在每台客户端计算机上修复注册表。

请注意,如果您要通过软件包安装CefSharp.WPF,则需要您的项目具有x86 \ x64平台(不适用于AnyCPU)。但是如果你有这样的要求,你真的可以使它与任何CPU一起工作,只需要你的努力。