在我的 uwp 应用程序中,我使用 webview2(来自 Microsoft.UI.Xaml.Controls)。 并且其中显示的网页内容可以拖放。 我想禁用这个拖放功能,尝试了很多方法,但都失败了。 例如。
AllowDrop="False" CanDrag="False"
有什么想法吗?
xaml:
xmlns:controls="using:Microsoft.UI.Xaml.Controls"
<controls:WebView2 x:Name="_WebView2" Height="370" Width="792"
NavigationStarting="WebView2_NavigationStarting"/>
C#:
await _WebView2.EnsureCoreWebView2Async();
_WebView2.CoreWebView2.Navigate(sourceStr);
试试这个:
await _WebView2.EnsureCoreWebView2Async();
_WebView2.CoreWebView2.Controller.AllowExternalDrop = false;
它在我的测试应用程序中有效。 您可以查看文档。
在 WebView2 中禁用拖放可能有点棘手,因为
AllowDrop
和 CanDrag
属性可能无法按预期工作。这里有一些建议:
NavigationStarting
事件并设置
Cancel
WebView2NavigationStartingEventArgs
到 true
的属性
当导航是由于拖放操作而导致时。InvokeScriptAsync
与 JavaScript eval
函数结合使用来使用 HTML 事件处理程序,
并使用 HTML 事件处理程序中的 window.external.notify
来
使用 WebView.ScriptNotify
通知应用程序。请注意,WebView2 目前不具备完整的 UWP 支持,但 Microsoft 正在开发拖放 API。您可能需要关注 Microsoft 的相关更新。
以下是如何使用 JavaScript 禁用拖放的示例:
await _WebView2.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(@"
window.addEventListener('dragstart', function(event) {
event.preventDefault();
});
");
此脚本向窗口添加一个事件侦听器,每当拖动开始时,该事件侦听器都会阻止默认操作(即允许拖动)。
请记住将
_WebView2
替换为您的 WebView2 控件的名称。