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;
}
}
有没有办法禁止将记事本、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;
}
}