В первом приближении, если вы когда-либо манипулируете элементами пользовательского интерфейса WPF в коде, вы делаете это неправильно. Конечно, вы можете создать поле со списком «M» и «F» и задать его выбор:
<ComboBox>
<ComboBoxItem>M</ComboBoxItem>
<ComboBoxItem>F</ComboBoxItem>
<ComboBox.SelectedIndex>0</ComboBox.SelectedIndex>
</ComboBox>
Но что тогда? Что вы делаете с этим выбором? Если ваш ответ включает в себя что-то вроде этого:
if cboGender.SelectedValue == "M"
вы идете по дороге, которая приведет вас к написанию программ, которые очень сложно поддерживать.
Если, с другой стороны, вы создаете класс для привязки вашего пользовательского интерфейса, например:
public class MyViewModel
{
public MyViewModelClass()
{
Gender = "M";
}
public IEnumerable<string> Genders { get { return new string[] { "M", "F" } };
public string Gender { get; set; }
}
Тогда ваш XAML - при условии, что где-то вдоль линии, для которой вы установили DataContext
для экземпляра MyViewModel
- станет:
<ComboBox ItemsSource="{Binding Genders}" SelectedValue="{Binding Gender}"/>
Любая другая логика, которая использует свойство Gender
, теперь смотрит на этот класс, а не на пользовательский интерфейс. Таким образом, вы можете изменить пользовательский интерфейс, не влияя на вашу логику, и наоборот.
(Обратите внимание, что, хотя модели представления обычно реализуют INotifyPropertyChanged
, вам нужно только , чтобы сделать это, , если вы собираетесь изменять Gender
в своем коде и хотите, чтобы новые значения отображались в интерфейсе.)