2009-10-19 22 views
1

我試圖實現一項功能,可以讓用戶將文件拖入要在FlowDocumentReader中打開的應用程序。爲什麼我不能將文件從資源管理器中刪除到FlowDocumentReader以及如何修復它?

我的問題是,雖然我在FlowDocumentReader上有AllowDrop = true,但光標不會更改爲「drop here」圖標,而是更改爲「drop is not allowed」圖標。 這隻發生在FlowDocumentReader上,UI的所有其他部分(窗口本身,其他控件)按預期工作。 FlowDocumentReader實際上接收事件,並且可以處理該丟棄,但是用戶沒有可視指示他可以在這裏釋放鼠標。

我也不能掩蓋「降不得」通過設置光標= Cursors.None

回答

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) 
    { 
    } 
+0

您可能沒有嘗試這個代碼,因爲它不工作 - 光標不會變成「放在此處」拖放事件不叫。 – 2010-01-11 16:31:31

+0

抱歉在xaml我粘貼了「DragEnter」。應該是「DragOver」。改變它並嘗試。 – 2010-01-12 06:22:34

+0

適用於DragOver!謝謝。 – 2010-02-23 05:24:41

0

我無法找到任何直接的方式來解決這個問題,所以這裏是我已經結束了與光標:

  • 我在FlowDocumentReader的頂部放置了一個網格。此網格具有已售出的顏色,不透明度爲0(透明)和可見性=摺疊。這個網格的目的是作爲放置目標。
  • 當FlowDocumentReader中的FlowDocument接收到DragEnter事件時,我將網格的可見性切換爲Visible。網格開始接收拖動事件,並且光標停留在「drop here」表單中。
  • 當電網接收跌落或DragLeave事件,它的可見性被還原爲摺疊允許的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"/> 
    
相關問題