我正在尝试使用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 Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION \ processName.exe类型:REG_DWORD值数据:11000(十进制)
我不会直接回答您的问题,但是会根据我的经验为您提供一些建议,那就是:切勿对任何严重的问题使用默认的wpf WebBrowser。我尝试过多次将其用于许多不同的项目,并且总是遇到一些showtopper问题,没有例外。当然,这是IE11(10,9-我曾说过很多次)仿真。
以您的情况为例。不仅画布单击不起作用-整个页面被完全破坏。如果您尝试选择颜色,则滑块会弄乱,再次单击将不起作用,并且此页面上还有许多其他问题。
因此,请勿打扰wpf WebBrowser,而只使用真实的浏览器,例如Chromium。我个人更喜欢CpfSharp,它具有wpf与铬的结合力。只需安装他们的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";
您的页面仅显示为应有的状态。画布点击有效,没有样式被保存,拾色器有效。除了这一切,cefsharp浏览器控件是很多更灵活。您可以轻松地从javascript调用to \,拦截几乎所有事件(资源负载,重定向),可以禁用javascript \ images,甚至拦截请求并提供完全不同的数据。无需在每台客户端计算机上修复注册表。
请注意,如果要通过软件包安装CefSharp.WPF,它将要求您的项目具有x86 \ x64平台(不适用于AnyCPU)。但是,如果您有这样的要求,您确实可以毫不费力地使其与任何CPU一起使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句