Exemple #1
0
        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;
        }
Exemple #2
0
        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();
        }