WPF Combobox tiene:
SelectedValuePath
propiedad que especifica la ruta de acceso a la propiedad que se utiliza para determinar el valor de la propiedad SelectedValue
. Es similar a ASP.NET ListItem
's Value
propiedad.
DisplayMemberPath
propiedad que define una plantilla predeterminada que describe cómo mostrar los objetos de datos. Es similar a la propiedad ListItem
de ASP.NET Text
.
Digamos que usted quiere que su Combobox
para mostrar una colección de los KeyValuePair
objetos siguientes:
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"),
};
Se define una propiedad en su modelo de vista devolver esa colección:
public KeyValuePair<int, string>[] TripLengthList
{
get
{
return tripLengthList;
}
}
Entonces, su XAML para el Combobox
sería:
<ComboBox
SelectedValue="{Binding FilterService.TripLengthFrom, Mode=TwoWay}"
ItemsSource="{Binding TripLengthList, Mode=OneTime}"
SelectedValuePath="Key"
DisplayMemberPath="Value" />
Cuando se establece SelectedValuePath
y DisplayMemberPath
propiedades a los nombres de las propiedades deseadas de los objetos (Key
y Value
correspondientemente) que muestran por el Combobox
.
O, si realmente desea agregar elementos a Combobox
en el código detrás de en lugar de usar un enlace, puede hacerlo también.Por ejemplo:
<!--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"));
}
es decir: un valor int –