Автоматическое заполнение для ComboBox в WPF где угодно в тексте (только начинающийся)

Я могу поддержать дальнейший ответ Рубена с помощью сравнения двух отображаемых сообщений:

enter image description here [/g3]

и сообщение:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): предупреждение MSB3277: обнаружены конфликты между различными версиями одной и той же зависимой сборки, которые невозможно было решить , Эти ссылочные конфликты перечислены в журнале сборки, когда длина журнала задана как подробное.

blockquote>

Итак, право Рубена - это просто неверно. Нет никаких конфликтов, просто отсутствует сборка. Это особенно скучно, когда проект является приложением ASP.NET, поскольку представления компилируются по требованию, то есть непосредственно перед отображением в первый раз. Это происходит тогда, когда становится необходимым наличие сборки. (Существует возможность предварительно скомпилировать представления вместе с остальной частью кода, но это другая история .) С другой стороны, если вы установите многословие в Diagnostic, вы получите следующий результат:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): предупреждение MSB3245: Не удалось устранить эту ссылку. Не удалось найти сборку «System.Web.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL». Убедитесь, что сборка существует на диске. Если эта ссылка требуется вашим кодом, вы можете получить ошибки компиляции.

blockquote>

В результате все, что вам нужно сделать, это либо:

  1. Добавить ссылку на сборку вручную (найдите ее на диске, возможно, GAC, и добавьте ее как «прямую» ссылку), или
  2. Используйте пакет NuGet (если он опубликован в галерее), чтобы загрузить его и ссылаться на сборку

Подробнее о галерее NuGet здесь . Подробнее о прекомпиляции представлений ASP.NET здесь .

29
задан robintw 6 February 2009 в 22:34
поделиться

4 ответа

Проверьте следующую статью в CodeProject: A Reusable WPF Autocomplete TextBox

8
ответ дан 28 November 2019 в 01:27
поделиться

Поле комбинированного списка WPF не поддерживает Автоматическое заполнение

, Вот образец, который позволяет Вам делать это косвенным способом путем применения фильтра к объектам.

См. http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cec1b222-2849-4a54-bcf2-03041efcf304/

2
ответ дан amazedsaint 14 October 2019 в 08:02
поделиться

Вы могли попытаться обработать события ComboBox's TextInput или PreviewTextInput, делание текста ищет себя, выбирая самый соответствующий объект, и устанавливая "e. Обработанный = верный". Просто мысль.Надеюсь, это поможет!

редактирование:

Это работает на отдельный символ (т.е. если Вы введете букву "j", то это выберет первый объект, который содержит "j" или "J"), но я уверен, что существует способ сделать это с Вашим управлением.Приятного отдыха!

private void MyComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e) {
    foreach (ComboBoxItem i in MyComboBox.Items) {
        if (i.Content.ToString().ToUpper().Contains(e.Text.ToUpper())) {
            MyComboBox.SelectedItem = i;
            break;
        }
    }
    e.Handled = true;
}
4
ответ дан Mark Carpenter 14 October 2019 в 08:02
поделиться

Насколько я знаю, что нет никакого способа вынудить стандартный ComboBox вести себя этот путь, просто изменив настройки. Таким образом, необходимо будет реализовать собственную производную поля комбинированного списка для этого или искать готовое стороннее управление (я полагаю, что существуют многие из них).

4
ответ дан Alan Mendelevich 14 October 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: