无法将文本拖动到WPF窗口中

时间:2013-02-12 16:54:20

标签: c# wpf drag-and-drop window

我正在尝试设置WPF窗口,以便它可以通过Drag and Drop接受不同类型的数据。如果我创建一个新项目并将窗口设置为以下内容:

<Window x:Class="DropShare.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" AllowDrop="True" DragEnter="Window_DragEnter">

    <Grid>

    </Grid>
</Window>

并将代码隐藏设置为:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void Window_DragEnter(object sender, DragEventArgs e)
    {

    }
}

我只会DragEnter触发文件。 永远不会触发任何其他内容 - 文本,图像等。

有什么我想念的吗?我读过的所有教程似乎都暗示这是所有需要的,因为DragEnter事件处理程序让我说出我接受的内容。

2 个答案:

答案 0 :(得分:1)

所以你的代码对我来说很好。但试试这个......

在你的窗口中:

<Label Background="Purple" HorizontalAlignment="Center" VerticalAlignment="Center" Content="Drag from here!" MouseDown="Label_MouseDown"/>

并在您的代码中:

private void Label_MouseDown(object sender, MouseButtonEventArgs e)
{
    DragDrop.DoDragDrop(this, "This is just a test", DragDropEffects.All);
}

然后从标签拖动到窗口中,查看您的事件是否会触发。

如果这样做,可能与Visual Studio和外部环境(可能)之间的权限级别有关。

请参阅:

https://superuser.com/questions/59051/drag-and-drop-file-into-application-under-run-as-administrator

答案 1 :(得分:0)

在WPF中,拖放功能始终必须处理DragDrop类,请检查here如何在应用程序之间拖放