WPF Webbrowser 控件禁用删除

WPF Webbrowser control disable drop

有没有办法禁止将记事本、word 等项目拖放到 WPF 中的 System.Windows.Controls.WebBrowser 控件上。 我尝试过各种选择,例如 AllowDrop="False" - 不起作用。 尝试捕获诸如 Drop、PreviewDrop、DragLeave、PreviewDragLeave、PreviewDragOver、PreviewDragEnter 之类的事件 - None 这些事件在我将项目拖放到 WebBrowser 控件上时触发。

正如您提到的,none 的 Drop 事件被触发,并且本机浏览器控件似乎非常有限,这给您留下了两种可能性:

  • 使用另一个浏览器控件,如 wpfchromium

  • 或者在浏览器顶部定义一个透明的弹出窗口并处理 下降甚至在其中

:

<WebBrowser Height="300" Width="300" x:Name="wbBrowser"/>
    <Popup  Opacity="1" AllowsTransparency="True" IsOpen="True" Placement="Center" 
     PlacementTarget="{Binding ElementName=wbBrowser}" >
        <Border  Background="Black" Opacity="0.01" 
         Width="300" Height="300">
        </Border>
    </Popup>

这个解决方案一点也不漂亮,还需要更多逻辑才能 handle when the popup's parent control moves..

...如果您的主要内容是 html:

,您可能还会发现此解决方案有帮助

How to disable drop on wpf webbrowser control

使用构造函数或Xaml创建以下方法将阻止拖动更改网络浏览器的当前状态:

private void webBrowser_Navigating(object sender, NavigatingCancelEventArgs e)
{
    // The WebBrowser control is checking the Uri 
    if (e.Uri.ToString() != "Place your url string here") //ex: "http://whosebug.com"
    {
        // Uri is not the same so it cancels the process
        e.Cancel = true;
    }
}