如何禁用 Maui WebView 控件的开发人员工具? 使用 Xamarin WebView2,使用 CoreWebView2.Settings.AreDevToolsEnabled 非常容易。
事实上,我相信至少在Windows上,Maui WebView是基于CoreWebView2的。 有没有办法直接访问CoreWebView2.Settings?
谢谢,
maui中的
WebView
是windows平台上WinUI3的WebView2
。根据这个链接,你可以尝试下面的代码在maui中禁用windows平台的开发者工具。
在xaml中:
<WebView x:Name="webview" .../>
在手边的代码中:
#if WINDOWS
(webview.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2).CoreWebView2.Settings.AreDevToolsEnabled = false;
#endif
我做了一个示例来测试这一点,当我删除时,代码被击中了
#if
。但它无法禁用开发者工具。这似乎是 WebView2 的一个错误,您可以在 github 上报告它。
嗯...我确实找到了解决方案。 似乎是在正确的时间设置AreBrowserAcceleratorKeysEnabled的问题。
并不理想,但设置第一次调用导航事件是有效的。 (也许有人知道更好的方法来做到这一点)
WebView wv = new WebView();
wv.Navigating += Wv_Navigating ;
private void Wv_Navigating(object sender, WebNavigatingEventArgs e)
{
WebView webview = (WebView)sender;
CoreWebView2 coreWebView2 = (webview.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2).CoreWebView2;
coreWebView2.Settings.AreDevToolsEnabled = false;
webview.Navigating -= Wv_Navigating;
}
我认为
HandlerChanged
事件可能比 Navigating
事件更好。
Microsoft.Web.WebView2.Wpf.WebView2
有 CoreWebView2InitializationCompleted
事件。
Microsoft.UI.Xaml.Controls.WebView2
有 CoreWebView2Initialized
事件。
#if WINDOWS
using System;
using Microsoft.UI.Xaml.Controls;
using Microsoft.Web.WebView2.Core;
WebView wv = new();
wv.HandlerChanged +=
(sender, e) =>
{
if (sender is not WebView webView)
{
return;
}
if (webView.Handler?.PlatformView is not WebView2 webView2)
{
return;
}
webView2.CoreWebView2Initialized +=
(sender, e) =>
{
CoreWebView2Settings settings = webView2.CoreWebView2.Settings;
settings.AreDevToolsEnabled = false;
};
};
#endif