有人知道从WPF组合框到WinForms的SelectedValuePath
和selectedValue
是等价的吗?我尝试使用ValueMember
和Value
,但这不起作用......
答案 0 :(得分:2)
以下是转化次数:
WPF : WinForms
.SelectedIndex | .SelectedIndex
.SelectedItem | .SelectedItem
.SelectedValue | .SelectedValue
.SelectedValue.ToString() | .SelectedText
.SelectedValuePath | .ValueMember
答案 1 :(得分:2)
在WPF中,SelectedValuePath
获取或设置用于从SelectedValue
获取SelectedItem
的路径。它正是ValueMember
在Windows窗体中提供的内容,它获取或设置属性的路径,以用作ComboBox
项的实际值。
在Windows窗体中,如果要对ComboBox
使用数据绑定,则应使用以下属性:
DataSource
IList
接口或Array
的对象。 DisplayMember
DataSource
属性指定的集合中包含的对象属性的名称。如果对象上不存在指定的属性或DisplayMember
的值为空字符串(“”),则会显示对象的ToString
方法的结果。 ValueMember
表示DataSource属性值的单个属性名称,或者解析为最终数据绑定对象的属性名称的句点分隔属性名称的层次结构。
SelectedValue
包含ValueMember
属性指定的数据源成员值的对象。
示例强>
在表单上放置ComboBox
和Button
并处理Load
Form
事件Click
事件Button
,如下所示。点击Button
,您会看到ComboBox
的所选项目将更改为 Two 。不要忘记为事件注册事件处理程序。
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
var categories = new List<Category>()
{
new Category(){Id=1, Name= "One"},
new Category(){Id=2, Name= "Two"},
new Category(){Id=3, Name= "Three"},
};
this.comboBox1.DataSource = categories;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "Id";
}
private void button1_Click(object sender, EventArgs e)
{
this.comboBox1.SelectedValue = 2;
}