WPF Combobox ha:
SelectedValuePath
proprietà che specifica il percorso della proprietà che viene utilizzato per determinare il valore della proprietà SelectedValue
. E 'simile a Value
proprietà ASP.NET ListItem
s'.
DisplayMemberPath
proprietà che definisce un modello predefinito che descrive come visualizzare gli oggetti dati. È simile alla proprietà Text
di ASP.NET.
Diciamo che si desidera che il Combobox
per mostrare una raccolta dei seguenti KeyValuePair
oggetti:
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"),
};
si definisce una proprietà nel modello di vista di ritorno che la raccolta:
public KeyValuePair<int, string>[] TripLengthList
{
get
{
return tripLengthList;
}
}
Poi, il tuo XAML per il Combobox
sarà:
<ComboBox
SelectedValue="{Binding FilterService.TripLengthFrom, Mode=TwoWay}"
ItemsSource="{Binding TripLengthList, Mode=OneTime}"
SelectedValuePath="Key"
DisplayMemberPath="Value" />
Dove si impostano le proprietà SelectedValuePath
e DisplayMemberPath
con i nomi proprietà desiderati degli oggetti (Key
e Value
corrispondentemente) visualizzati da Combobox
.
Oppure, se si desidera davvero aggiungere elementi a Combobox
nel codice dietro anziché utilizzare un'associazione, è possibile farlo anche.Per esempio:
<!--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"));
}
cioè: un valore int –