3
我試圖在WPF 3.5中創建一個編輯器。我遇到的困難是:我希望用戶將包含Image
對象的ListBox
中的圖像拖放到文本編輯器中。在運行時將圖像拖動到RichTextBox中的FlowDocument中
我讀過msdn docs有關使用FlowDocument
一個RichTextBox
內ScrollViewer
裏,我使用了編輯器,其中:
<ScrollViewer>
<RichTextBox>
<FlowDocument AllowDrop="True" Drop="FlowDocument_Drop" DragOver="FlowDocument_DragOver">
</FlowDocument>
</RichTextBox>
</ScrollViewer>
我有一個測試Image
控制,模擬什麼,我打算把在ListBox
:
<Image Grid.Row="0" Name="img" Source="test.png"
MouseMove="img_MouseMove" />
後面的代碼看起來是這樣的:
private void img_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DragDrop.DoDragDrop(sender as DependencyObject,
new DataObject("ImageSource", (sender as Image).Source), DragDropEffects.Copy);
}
}
private void FlowDocument_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("ImageSource"))
{
ImageSource img = (ImageSource)e.Data.GetData("ImageSource");
(sender as FlowDocument).Blocks.Add(new BlockUIContainer(new Image() { Source = img }));
}
}
private void FlowDocument_DragOver(object sender, DragEventArgs e)
{
e.Effects = DragDropEffects.Copy;
if (e.Data.GetDataPresent("ImageSource"))
{
e.Effects = DragDropEffects.Copy | DragDropEffects.Move;
}
}
我的問題是,FlowDocument_Drop
方法從不執行,當圖像被拖過FlowDocument
時,光標仍然顯示拖動不可用。
我不明白爲什麼事件不會觸發。