private void SearchTextBox_PreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Down) { if (ResultsOpen) { var items = GetResultItems().ToList(); var nextIndex = items.IndexOf(SelectedResultItem) + 1; if (nextIndex < items.Count) { items[nextIndex].IsSelected = true; e.Handled = true; } } } else if (e.Key == Key.Up) { if (ResultsOpen) { var items = GetResultItems().ToList(); var prevIndex = items.IndexOf(SelectedResultItem) - 1; if (prevIndex >= 0) { items[prevIndex].IsSelected = true; e.Handled = true; } } } else if (e.Key == Key.Tab || e.Key == Key.Enter) { if (ResultsOpen) { SelectResultItemCommand?.Execute(SelectedResultItem.DataContext); if (e.Key == Key.Enter) { e.Handled = true; } } } }
private void OnResultItemClicked(object sender, RoutedEventArgs e) { ResultItem item = e.OriginalSource as ResultItem; SelectResultItemCommand?.Execute(item.DataContext); }