WPF Combobox как заполнить списком

#c# #wpf #combobox

#c# #wpf #выпадающий список

Вопрос:

Я создаю приложение для отслеживания бюджета для себя, поскольку я учусь программировать, и я хочу иметь категории вещей, на которые я трачу свои деньги. У меня есть combobox который я хотел бы заполнить содержимым списка, содержащего категории. Как бы я это сделал?

Ответ №1:

Вы бы просто назначили коллекцию элементов ItemsSource свойству:

 comboBox.ItemsSource = new List<string> { "Item 1", "Item 2", "Item 3" };
  

Смотрите примечания к ItemsControl.Свойство ItemsSource в MS Docs:

Модель содержимого: Это свойство может использоваться для добавления элементов в ItemsControl.

Распространенным сценарием является использование элемента управления ItemsControl, такого как ListBox, ListView или TreeView, для отображения коллекции данных или для привязки элемента управления ItemsControl к объекту коллекции. Чтобы привязать ItemsControl к объекту коллекции, используйте свойство ItemsSource. Обратите внимание, что свойство ItemsSource по умолчанию поддерживает одностороннюю привязку.

Когда свойство ItemsSource установлено, коллекция элементов становится доступной только для чтения и фиксированного размера.


Насколько я понимаю, Items свойство в основном существует как коллекция по умолчанию, куда элементы добавляются, когда вы назначаете их непосредственно в XAML. Элементы управления приписываются

 [System.Windows.Markup.ContentProperty("Items")]
  

для поддержки XAML, подобного этому:

 <ComboBox>
    <sys:String>Item 1</sys:String>
    <sys:String>Item 2</sys:String>
    <sys:String>Item 3</sys:String>
</ComboBox>
  

Ответ №2:

Для заполнения выпадающего списка содержимым списка необходимо добавить каждый элемент этого списка в items выпадающего списка.

Минимальный пример, предполагающий, что у вас есть comboBox1 определенный:

         List<string> myList = new List<string> { "item1", "item2", "item3" };
        myList.ForEach(x => { comboBox1.Items.Add(x); });