混淆于wpf ComboBox DisplayMemberPath,SelectedValue和SelectedValuePath

80

我一直在苦恼那些comboBox属性

  1. DisplayMemberPath(显示成员路径)
  2. SelectedValue(选定的值)
  3. SelectedValuePath(选定的值路径)

我正在构建一个主从表格。

  1. ComboBox填充客户信息
  2. 用户在ComboBox中选择客户
  3. 所有的文本框都被正确地填充了

我所遇到的问题是,虽然我已经使它工作了,但我并不理解这些属性之间的区别。 是否有一个简单的例子来解释它们的含义?

1个回答

166

我认为通过一个例子可以更好地理解。看看这个类:

public class Employee
{
   public int Id { get; set; }
   public string Name { get; set; }
}

以及以下 XAML 代码:

<ComboBox ItemsSource="{Binding Source={StaticResource Employees}}"
          DisplayMemberPath="Name"
          SelectedValuePath="Id"/>
DisplayMemberPath指向Name属性,这意味着在ComboBox中显示的值以及下拉列表中包含的Employee条目的值将是Employee对象的Name属性。
为了理解另外两个属性,您首先应该理解SelectedItemSelectedItem将返回ComboBox中当前选定的Employee对象。 您还可以使用Employee对象将SelectedItem赋值为来设置ComboBox中的当前选择。 SelectedValuePath指向Id,这意味着您可以使用SelectedValue获取当前选定EmployeeId。 您也可以通过将SelectedValue设置为Id(我们假设该Id存在于Employees列表中)来设置ComboBox中当前选定的Employee

11
这是我所见过的最简明易懂的这些概念解释。 - JoelWilson
1
注意:此示例不起作用,因为“Id”和“Name”必须是属性,而不是类字段。 - Shorstok
3
没错,这个课程只是为了展示伪代码。我已经修正了它。 - Yogesh
@Yogesh 在我看来,这个答案比这个答案更好、更简洁、更易于理解。我说“在我看来”,因为我们每个人理解事物的方式都不同。也许,对其他读者来说,另一个答案更容易理解。 - nam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接