我正在尝试实现一项功能,让用户将文件拖到要在FlowDocumentReader中打开的应用程序中。
我的问题是,虽然我在FlowDocumentReader上有AllowDrop = true,但光标不会更改为“drop here”图标,而是更改为“drop is not allowed”图标。 这只发生在FlowDocumentReader,UI(窗口本身,其他控件)的所有其他部分按预期工作。 FlowDocumentReader实际上接收事件,并且可以处理丢弃,但是用户没有可视指示他可以在这里释放鼠标。
我也无法通过设置Cursor = Cursors.None来隐藏“不允许丢弃”光标
答案 0 :(得分:2)
需要在FlowDocument中处理DragOver事件以允许在此处删除。
XAML:
<!--
<FlowDocumentReader x:Name="fdr" Background="White">
<FlowDocument x:Name="doc" AllowDrop="True" DragEnter="doc_DragOver" Drop="doc_Drop" Background="White"/>
</FlowDocumentReader>
-->
<FlowDocumentReader x:Name="fdr" Background="White">
<FlowDocument x:Name="doc" AllowDrop="True" DragOver="doc_DragOver" Drop="doc_Drop" Background="White"/>
</FlowDocumentReader>
代码背后的代码:
private void doc_DragOver(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.All;
e.Handled = true;
}
private void doc_Drop(object sender, DragEventArgs e)
{
}
答案 1 :(得分:0)
我找不到任何直接解决方法,所以这就是我最终的结果:
当网格收到Drop或DragLeave事件时,其可见性将恢复为Collapsed以允许FlowDocument接收鼠标事件
<FlowDocumentReader x:Name="fdr" Grid.Row="1" Background="White">
<FlowDocument x:Name="doc" DragEnter="doc_DragEnter" Background="White"/>
</FlowDocumentReader>
<Grid x:Name="dtg" Grid.Row="1" Background="White" Opacity="0"
Drop="dtg_Drop" DragLeave="dtg_DragLeave" Visibility="Collapsed"/>