private void ElementListOnDrop(object sender, DragEventArgs e)
{
var droppedData = e.Data.GetData(typeof(Configuration.XML.Window)) as Configuration.XML.Window;
var listBox = sender as ListBox;
if (listBox == null)
{
return;
}
var target = GetDataFromListBox(listBox, e.GetPosition(listBox)) as Configuration.XML.Window;
var removedIdx = this.ViewModel.Windows.IndexOf(droppedData);
var targetIdx = target == null ? this.ViewModel.Windows.Count - 1 : this.ViewModel.Windows.IndexOf(target);
if (removedIdx < targetIdx)
{
this.ViewModel.Windows.Insert(targetIdx + 1, droppedData);
this.ViewModel.Windows.RemoveAt(removedIdx);
}
else
{
var remIdx = removedIdx + 1;
if (this.ViewModel.Windows.Count + 1 <= remIdx)
{
return;
}
this.ViewModel.Windows.Insert(targetIdx, droppedData);
this.ViewModel.Windows.RemoveAt(remIdx);
}
this.ViewModel.SelectedWindow = this.ViewModel.Windows[targetIdx];
}