我尝试使用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(十进制)
答案 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一起工作,只需要你的努力。