private void AutoMergeListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (SelectedItemsList != null) { foreach (var removedItem in e.RemovedItems.Cast <ChangesetViewModel>()) { SelectedItemsList.Remove(removedItem); } foreach (var addItem in e.AddedItems.Cast <ChangesetViewModel>()) { SelectedItemsList.Add(addItem); } } }
private void TextBox_KeyUp(object sender, KeyEventArgs e) { PrevIndex = Index; switch (e.Key) { case Key.Up: DecreaseIndex(); ChangeColorSelectedItem(); ChangeColorPreviousSelectedItem(); var tb = FindFirstTextBlock(); if (tb != null) { if (tb.Value.Y < 0) { scollViewer.ScrollToVerticalOffset(scollViewer.VerticalOffset - subjectElementHeight); } } break; case Key.Down: IncreaseIndex(); ChangeColorSelectedItem(); ChangeColorPreviousSelectedItem(); if (scollViewer.ActualHeight < Index * subjectElementHeight) { scollViewer.ScrollToVerticalOffset(scollViewer.VerticalOffset + subjectElementHeight); } break; case Key.Enter: if (Index < 0) { break; } if (Index >= Results.Count) { break; } AddSelectedItem(Results[Index]); DecreaseIndex(); var para = textBox.GetFirstParagraph(); if (para != null) { List <Run> targets = new List <Run>(); foreach (var item in para.Inlines) { if (item is Run run) { targets.Add(run); } } foreach (var item in targets) { para.Inlines.Remove(item); } } InitIndex(); e.Handled = true; break; case Key.Delete: case Key.Back: var currentButtons = textBox.GetButtons(); List <Button> exceptedButtons = new List <Button>(); foreach (var button in lastButtons) { if (!currentButtons.Exists(x => x.DataContext == button.DataContext)) { exceptedButtons.Add(button); } } List <object> removeTargets = new List <object>(); if (SelectedItemsList != null) { foreach (var item in SelectedItemsList) { if (exceptedButtons.Exists(x => x.DataContext == item)) { removeTargets.Add(item); } } } foreach (var item in removeTargets) { SelectedItemsList.Remove(item); User user = item as User; user.IsBlink = false; Results.Add(user); } OnPropertyChanged(nameof(Results)); break; default: var text = textBox.GetText(); if (string.IsNullOrWhiteSpace(Regex.Replace(text, " ", ""))) { CollapsePopup(); } else { SearchProcess(text); } break; } e.Handled = true; }