WPF Combobox имеет:
SelectedValuePath
свойство, которое указывает путь к свойству, которое используется для определения значения SelectedValue
имущество.Это похоже на свойство Value
ASP.NET ListItem
. DisplayMemberPath
свойство, которое определяет шаблон по умолчанию, который описывает, как отображать объекты данных.Оно похоже на свойство Text
ASP.NET ListItem
.
Допустим, вы хотите, чтобы ваш Combobox
отображал коллекцию следующих KeyValuePair
объектов:
private static readonly KeyValuePair<int, string>[] tripLengthList = {
new KeyValuePair<int, string>(0, "0"),
new KeyValuePair<int, string>(30, "30"),
new KeyValuePair<int, string>(50, "50"),
new KeyValuePair<int, string>(100, "100"),
};
Вы определяете свойство в своей модели представления, возвращая эту коллекцию:
public KeyValuePair<int, string>[] TripLengthList
{
get
{
return tripLengthList;
}
}
Тогда ваш XAML для Combobox
будет:
<ComboBox
SelectedValue="{Binding FilterService.TripLengthFrom, Mode=TwoWay}"
ItemsSource="{Binding TripLengthList, Mode=OneTime}"
SelectedValuePath="Key"
DisplayMemberPath="Value" />
Где вы задали SelectedValuePath
и DisplayMemberPath
свойств к нужным именам свойств объектов (Key
и Value
соответственно), отображаемых с помощью Combobox
.
Или, если вы действительно хотите добавить элементыдо Combobox
в коде вместо использования привязки, вы также можете сделать это.Например:
<!--XAML-->
<ComboBox x:Name="ComboBoxFrom"
SelectedValue="{Binding FilterService.TripLengthFrom, Mode=TwoWay}" />
// Code behind
public partial class FilterView : UserControl
{
public FilterView()
{
this.InitializeComponent();
this.ComboBoxFrom.SelectedValuePath = "Key";
this.ComboBoxFrom.DisplayMemberPath = "Value";
this.ComboBoxFrom.Items.Add(new KeyValuePair<int, string>(0, "0"));
this.ComboBoxFrom.Items.Add(new KeyValuePair<int, string>(30, "30"));
this.ComboBoxFrom.Items.Add(new KeyValuePair<int, string>(50, "50"));
this.ComboBoxFrom.Items.Add(new KeyValuePair<int, string>(100, "100"));
}