如何禁用UWP WebView2的拖放功能?

问题描述 投票:0回答:2

在我的 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);
c# windows uwp
2个回答
1
投票

试试这个:

await _WebView2.EnsureCoreWebView2Async();
_WebView2.CoreWebView2.Controller.AllowExternalDrop = false;

它在我的测试应用程序中有效。 您可以查看文档


-1
投票

在 WebView2 中禁用拖放可能有点棘手,因为

AllowDrop
CanDrag
属性可能无法按预期工作。这里有一些建议:

  1. 处理导航启动事件:禁用拖放的一种方法是处理
    NavigationStarting
    事件并设置
    Cancel
    WebView2NavigationStartingEventArgs
    true
    的属性 当导航是由于拖放操作而导致时。
  2. 使用 JavaScript: 另一种解决方法是将
    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 控件的名称。

© www.soinside.com 2019 - 2024. All rights reserved.