ComboBox в WPF: создание и настройка элемента управления
ComboBox в WPF - это элемент пользовательского интерфейса, который позволяет пользователю выбирать значения из предопределенного списка или вводить свое значение. ComboBox состоит из двух частей - текстового поля и выпадающего списка элементов. Когда пользователь выбирает значение из списка, это значение отображается в текстовом поле.
Основные свойства ComboBox:
- ItemsSource - источник данных для ComboBox. Может быть установлен на любую коллекцию, например, List, ObservableCollection или DataSet.
- SelectedItem - выбранное значение из ComboBox. Может быть установлен на любой элемент из ItemsSource.
- SelectedValue - значение выбранного элемента. Если установить это свойство, то ComboBox будет выбирать элемент по SelectedValue, вместо выбора элемента по выбранному значению.
- DisplayMemberPath - имя свойства объекта, которое будет отображаться в ComboBox. Например, если объект имеет свойство Name, то установка DisplayMemberPath на "Name" будет отображать имена объектов в ComboBox.
- SelectedValuePath - имя свойства объекта, значение которого будет использоваться в SelectedValue. Например, если установить SelectedValuePath на "Id", то выбранное значение будет Id выбранного объекта.
Пример кода:
XAML разметка:
View-Model код:
public class MainViewModel : INotifyPropertyChanged
{
public ObservableCollection People { get; set; }
private Person selectedPerson;
public Person SelectedPerson
{
get { return selectedPerson; }
set
{
selectedPerson = value;
OnPropertyChanged("SelectedPerson");
}
}
public MainViewModel()
{
People = new ObservableCollection()
{
new Person() {Id = 1, Name = "Alice"},
new Person() {Id = 2, Name = "Bob"},
new Person() {Id = 3, Name = "Charlie"},
};
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
В данном примере мы имеем ComboBox, который отображает список людей, представленных в коллекции People. Каждый элемент коллекции имеет два свойства - Id и Name. Name отображается в выпадающем списке ComboBox, а Id используется для установки выбранного значения ComboBox в свойство SelectedPerson. При выборе значения из списка, свойство SelectedPerson изменится на выбранный элемент из коллекции People.