c wpf combobox заполнение

ComboBox содержит коллекцию элементов и образует выпадающий список:

ComboBoxItem

В качестве элементов в ComboBoxe мы можем использовать различные компоненты, но наиболее эффективным является применение элемента ComboBoxItem . ComboBoxItem представляет элемент управления содержимым, в который через свойство Content мы можем поместить другие элементы. Например:

Для создания первого элемента использовался элемент ComboBoxItem. Для второго и третьего такие элементы создаются неявно. Однако использование ComboBoxItem имеет преимущество, так как мы можем выделить данный элемент, установив свойство IsSelected=»True» , либо можем сделать недоступным с помощью установки свойства IsEnabled=»False» .

Событие SelectionChanged

Обрабатывая событие SelectionChanged , мы можем динамически получать выделенный элемент:

Обработка события в коде C#:

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

Свойства

Установка свойства IsEditable=»True» позволяет вводить в поле списка начальные символы, а затем функция автозаполнения подставит подходящий результат. По умолчанию свойство имеет значение False .

Это свойство работает в комбинации со свойством IsReadOnly : оно указывает, является поле ввода доступным только для чтения. По умолчанию имеет значение False , поэтому если IsEditable=»True» , то мы можем вводить туда произвольный текст.

Еще одно свойство StaysOpenOnEdit при установке в True позволяет сделать список раскрытым на время ввода значений в поле ввода.

Когда я добавил comboBox в окно WPF, как добавить элементы в comboBox? Включить код XAML для проекта или в файл NameOfWindow.xaml.cs?

Лучше построить ObservableCollection и воспользоваться им.

cbx — имя comobobox

Сценарий 1 — у вас нет источника данных для элементов ComboBox Вы можете просто заполнить ComboBox статическими значениями следующим образом — Из XAML:

Или, из CodeBehind:

Сценарий 2.a — у вас есть источник данных, и элементы никогда не меняются Вы можете использовать источник данных для заполнения ComboBox. Любой тип IEnumerable может использоваться как источник данных. Вы должны назначить его ItemsSource свойство ComboBox, и это будет прекрасно (это зависит от того, как вы заполняете IEnumerable ).

Сценарий 2.b — у вас есть источник данных, и элементы могут быть изменены Вы должны использовать ObservableCollection в качестве источника данных и назначить его ItemsSource свойства ComboBox (это зависит от того, как вы заполняете ObservableCollection ). Использование ObservableCollection гарантирует, что всякий раз, когда элемент добавляется или удаляется из источника данных, это изменение немедленно отразится на пользовательском интерфейсе.

When I have added a comboBox to the WPF window, how do I add items to the comboBox? Int the XAML code for the design or in NameOfWindow.xaml.cs file?

7 Answers 7

Scenario 1 — you don’t have a data-source for the items of the ComboBox
You can just populate the ComboBox with static values as follows —
From XAML:

Or, from CodeBehind:

Scenario 2.a — you have a data-source, and the items never get changed
You can use the data-source to populate the ComboBox. Any IEnumerable type can be used as the data-source. You need to assign it to the ItemsSource property of the ComboBox and that’ll do just fine (it’s up to you how you populate the IEnumerable ).

Scenario 2.b — you have a data-source, and the items might get changed
You should use an ObservableCollection as the data-source and assign it to the ItemsSource property of the ComboBox (it’s up to you how you populate the ObservableCollection ). Using an ObservableCollection ensures that whenever an item is added to or removed from the data-source, the change will reflect immediately on the UI.

Оцените статью