3
私はWPF 3.5でエディタを作成しようとしています。私は難しかった機能は:Image
オブジェクトを含むListBox
からテキストエディタに画像をドラッグ&ドロップしたいと思っています。実行時にRichTextBox内のFlowDocumentに画像をドラッグ
私は編集者のために使っていScrollViewer
、内側RichTextBox
内FlowDocument
の使用についてmsdn docsを読んだ:
<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
の上にドラッグされたときに、そのドラッグが使用できないことをカーソルが示していることです。
イベントがなぜ発生しないのかわかりません。