private void DisplayList_PreviewMouseMove(object sender, MouseEventArgs e) { //if the left mouse button is not pressed, then we can't be dragging anything if (e.LeftButton != MouseButtonState.Pressed || !(sender is ListBox) || (_clickedGame == null)) { return; } var mousePos = e.GetPosition(null); var diff = _startPoint - mousePos; //If we travel far enough, begin the drag if (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance || Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance) { _clickedGame = null; foreach (object selItem in _selItems) { if (!DisplayList.SelectedItems.Contains(selItem)) { DisplayList.SelectedItems.Add(selItem); } } //The sender is always the list box var listBox = (ListBox)sender; var items = listBox.SelectedItems.OfType <RemoteSteamApp>().ToArray(); FriendTransfer transferData = new FriendTransfer((FriendViewModel)listBox.DataContext, items); DataObject dragData = new DataObject(DRAG_DATA_NAME, transferData); DragDrop.DoDragDrop(this, dragData, DragDropEffects.Move); } }
private void DisplayList_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { _startPoint = e.GetPosition(null); _clickedGame = FindAncestor <ListBoxItem>((DependencyObject)e.OriginalSource)?.DataContext as RemoteSteamApp; if (_selItems.Any() && ((Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == 0)) { if (!_selItems.Contains(_clickedGame)) { _selItems.Clear(); } } }
private void DisplayList_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { _clickedGame = null; _selItems.Clear(); _selItems.AddRange(DisplayList.SelectedItems.Cast <object>()); }
public FriendTransfer(FriendViewModel list, RemoteSteamApp item) { SourceLibrary = list; SourceGame = item; }