private void ToApplyList_Drop(object sender, DragEventArgs e) { if (_isInside) { _isInside = false; var droppedDataInside = (IdFilter)e.Data.GetData(typeof(IdFilter)); _toApply.Remove(droppedDataInside); _toApply.Add(droppedDataInside); return; } var droppedData = (VM.Filters)(e.Data.GetData(typeof(VM.Filters)) ?? VM.Filters.Sepia); _toApply.Add(new IdFilter(droppedData)); ToApplyList.UpdateLayout(); ((ListViewItem)ToApplyList.ItemContainerGenerator.ContainerFromIndex(_toApply.Count - 1)).IsSelected = true; }
private void ToApplyListItem_Drop(object sender, DragEventArgs e) { var data = e.Data.GetData(typeof(IdFilter)); var droppedData = data is null ? new IdFilter((VM.Filters)(e.Data.GetData(typeof(VM.Filters)) ?? VM.Filters.Sepia)) : (IdFilter)e.Data.GetData(typeof(IdFilter)); if (droppedData is null) { return; } var target = (IdFilter)((ListViewItem)sender).DataContext; e.Handled = true; if (data is null) { _toApply.Add(droppedData); ToApplyList.UpdateLayout(); return; } var removedIdx = ToApplyList.Items.IndexOf(droppedData); var targetIdx = ToApplyList.Items.IndexOf(target); if (removedIdx < targetIdx) { _toApply.Insert(targetIdx + 1, droppedData); _toApply.RemoveAt(removedIdx); } else { var remIdx = removedIdx + 1; if (_toApply.Count + 1 > remIdx) { _toApply.Insert(targetIdx, droppedData); _toApply.RemoveAt(remIdx); } } ToApplyList.UpdateLayout(); }