Exemplo n.º 1
0
        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;
        }