我正在尝试设置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
事件处理程序让我说出我接受的内容。
答案 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如何在应用程序之间拖放