WPF Combobox выбрать сфокусированный предмет - PullRequest
0 голосов
/ 04 декабря 2018

Я использую этот метод для фокусирования на конкретном элементе комбинированного окна.

/// <summary>Combo box focus index.</summary>
private int cbfi = -1;
/// <summary>Focus specified list item based on char match to language name.</summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void onLangComboInput(object sender, TextCompositionEventArgs e) {
    var cb = sender as ComboBox;
    var ch = e.Text;
    var it = cb.findNext<StackPanel, UIElement>(
        //...
    );
    if (it == null) return;
    it.Focusable = true;
    it.Focus();
    Keyboard.Focus(it);
}

Метод работает в том смысле, что он правильно фокусирует элемент из списка, и список прокручивается нормально, но у меня естьпроблема при применении сфокусированного элемента как ComboBox SelectedItem, когда я нажимаю Enter - выбран какой-то другой элемент, кроме сфокусированного, и я не могу понять, почему.Похоже, клавиатура фокус установлен неправильно.

Обновление

В основном у меня есть обычный System.Windows.Controls.Combobox со списком около 300 пользовательских элементов просмотра.Я хочу, чтобы базовая функциональность переходила к элементу, который начинается с соответствующего символа в расширенном списке, когда я нажимаю на символ на клавиатуре (но я не хочу автоматического выбора, просто фокусируюсь и прокручиваю до этого элемента).

Иснова.У меня есть пользовательский вид элемента, который я добавляю к ListView - Items.Add(mycustomUIElement), а экземпляр ListView устанавливается как DataContext из ComboBox.Каждый элемент представления имеет свой собственный DataContext, назначенный определенному элементу данных.И элемент данных содержит свойство вложенной строки, которое сравнивается с вводимым символом.Также у меня есть альтернативная строка, если основная функция недоступна, поэтому я не могу использовать встроенную функциональность, как в этот вопрос .

Поиск и прокрутка элементов работает нормально, но с клавиатуройфокусировка, кажется, не всегда работает.Например, когда я нажимаю клавишу ввода, выбирается неправильный элемент или когда используются клавиши со стрелками, следующий элемент не является соседом целевых элементов.

...