有没有办法禁止将诸如记事本,单词等项目丢弃到WPF中的System.Windows.Controls.WebBrowser控件上。
我尝试了各种选项,例如
AllowDrop="False"
- 不起作用。
试图捕获Drop,PreviewDrop,DragLeave,PreviewDragLeave,PreviewDragOver,PreviewDragEnter等事件 - 当我在WebBrowser控件上删除项目时,这些事件都不会触发。
答案 0 :(得分:1)
使用构造函数或Xaml创建以下方法将阻止拖动更改webbrowsers当前状态:
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://stackoverflow.com"
{
// Uri is not the same so it cancels the process
e.Cancel = true;
}
}
答案 1 :(得分:0)
正如您所提到的,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:
,你也可能会发现这个解决方案很有帮助