public virtual bool OnDrop(object data)
{
if (data is IDataObject[])
{
var lst = (IDataObject[])data;
foreach (var obj in lst)
{
ShowObject(obj);
}
return true;
}
if (data is string[])
{
var files = (string[])data;
var objects = new List<IDataObject>();
foreach (var file in files)
{
try
{
var xml = new System.Xml.XmlDocument();
xml.Load(file);
if (xml.DocumentElement.LocalName == "ZetboxPackaging")
{
objects.AddRange(Zetbox.App.Packaging.Importer.LoadFromXml(DataContext, file).OfType<IDataObject>());
}
}
catch (Exception ex)
{
// not an xml...
Zetbox.API.Utils.Logging.Client.Error("Unable to import file.", ex);
}
}
if (objects.Count > 0)
{
foreach (var obj in objects)
{
ShowObject(obj, activate: false);
}
ViewModelFactory.CreateDelayedTask(this, () =>
{
this.SelectedItem = DataObjectViewModel.Fetch(ViewModelFactory, DataContext, this, objects.First());
}).Trigger();
}
return true;
}
return false;
}