私はいくつかのツールをドロップしてダイアグラムを作成しています(これはtabitem2にあります)。WPF C#ドラッグアンドドロップイベント
私が探しているのは、キャンバス上にツールをドロップすると、テキストを吐き出すイベントが(tabitem3にある)テキストボックスに関連付けられている場合です。
XAML:背後に
<ListBox>
<ListBox.Resources>
<Style TargetType="{x:Type Image}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="100"/>
<EventSetter Event="MouseLeftButtonDown" Handler="DragImage"/>
</Style>
</ListBox.Resources>
<ListBoxItem>
<Image Source="toolitem1.png"></Image>
</ListBoxItem>
</ListBox>
<Canvas x:Name="Canvas" AllowDrop="True" Background="Aqua" Drop="DropImage"/>
コード:
private void DragImage(object sender, MouseButtonEventArgs e)
{
Image image = e.Source as Image;
DataObject data = new DataObject(typeof(ImageSource), image.Source);
DragDrop.DoDragDrop(image, data, DragDropEffects.Copy);
}
private void DropImage(object sender, DragEventArgs e)
{
ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
Image imageControl = new Image() { Width = image.Width, Height = image.Height, Source = image };
Canvas.SetLeft(imageControl, e.GetPosition(this.Canvas).X);
Canvas.SetTop(imageControl, e.GetPosition(this.Canvas).Y);
this.Canvas.Children.Add(imageControl);
}
UPDATE:
は、いくつかのサンプルコードを追加しましたし、無駄に以下の人々からの提案を試してみました。それは私のキャンバスのDropImageイベントをオーバーライドする私のListBoxItemオブジェクトでDragDrop.Dropを使用しようとすると、私はまだスタックしているように見えます。
これは、ドラッグソースがアプリケーション内にあり、データの提供または使用を意図していない他のアプリケーションから。もっと簡単な方法があるはずです。何とか 'PreviewDragOver'と' PreviewDrop'をどうにか使うように思えます。 – binki