我正在尝试将图像文件从资源管理器拖到我的 wpf 图像控件中。我当前的代码是
private void Image_Drop(object sender, DragEventArgs e)
{
string fpath = (string)e.Data.GetData(DataFormats.StringFormat);
BitmapImage tmpImage = new BitmapImage((new Uri(fpath)));
testImg.Source = tmpImage;
}
当我将文件放在控件上时,当前给了我 NullReferenceException 错误。
更新:
使用帕特里克的建议,通过将代码更改为此
private void Image_Drop(object sender, DragEventArgs e)
{
object data = e.Data.GetData(DataFormats.FileDrop);
foreach (string str in (string[])data)
{
BitmapImage tmpImage = new BitmapImage((new Uri(str)));
testImg.Source = tmpImage;
}
}
映像正确更新源。可能需要添加代码来处理多个图像选择丢弃。
你应该使用DataFormats.FileDrop
.它将在GetData
中给出文件名列表。这是我自己的应用程序中的一个工作示例:
object data = e.Data.GetData(DataFormats.FileDrop);
if (data is string[])
{
string[] files = (string[])data;
}
您正在尝试将文件作为字符串获取,因此我想这是您的e.Data.GetData(DataFormats.StringFormat)
行。如果要将位图拖放到控件上,则可以将其视为控件。试试这个。
private void Image_Drop(object sender, DragEventArgs e)
{
BitmapImage tmpImage = e.Data.GetData(DataFormats.Bitmap);
testImg.Source = tmpImage;
}
尽管我建议您输入代码以确保在假定控件是位图之前检查已拖动到控件上的内容类型。