0

編集:最も基本的なアプリケーションでさえ同じことをしているので、質問を簡略化しました

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" AllowDrop="True" >
    <Canvas DragEnter="Grid_DragEnter" Drop="Grid_Drop" AllowDrop="True" Name="C1">
        <Image Height="42" HorizontalAlignment="Left" Margin="27,28,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="42" Source="/WpfApplication1;component/Images/BackgroundMan.PNG" MouseDown="image1_MouseDown" AllowDrop="False" Canvas.Left="-15" Canvas.Top="-16" />
    </Canvas>
</Window>



namespace WpfApplication1
{
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void image1_MouseDown(object sender, MouseButtonEventArgs e)
    {
        //added a breakpoint it does fire
        //C1 is the name of the canvas
        DragDrop.DoDragDrop(C1, sender, DragDropEffects.Move);
    }

    private void Grid_DragEnter(object sender, DragEventArgs e)
    {
         //added a breakPoint it never fires
        e.Effects = DragDropEffects.Move;
    }

    private void Grid_Drop(object sender, DragEventArgs e)
    {
        //added a breakPoint it never fires
        image1.Margin = new Thickness(e.GetPosition(this).X, e.GetPosition(this).Y, 0, 0);
    }

}

}

DragEnter イベントも Drop イベントも発生しない

編集: Window_Drop イベントを追加しました。これが Drop イベントを受け入れているものです。Anyidea の理由と、Canvas に受け入れさせる方法を教えてください。そして、私が気にする必要さえあれば、私はそれで働くことができると思います.

4

2 に答える 2

1

Backgroundブラシを設定すると、イベントが発生します。

<Canvas Name="C1" AllowDrop="True"
        DragEnter="Grid_DragEnter" Drop="Grid_Drop"
        Background="Transparent">
于 2012-05-18T02:06:41.937 に答える
0

何をしたいのか完全にはわかりませんが、画像上で AllowDrop を true に設定すると、画像をクリックしてドラッグすると Grid_DragEnter イベントが発生します。

于 2012-05-17T23:58:51.583 に答える