与WPF ComboBox DisplayMemberPath,SelectedValue和SelectedValuePath混淆


74

我一直在努力应对那些comboBox属性

  1. DisplayMemberPath
  2. 选定值
  3. SelectedValuePath

我正在建立一个主要的细节表格。

  1. 组合框充满了客户
  2. 用户选择组合中的客户
  3. 所有文本框EG均正确填充

我遇到的问题使它可以正常工作,但我不了解这些属性和差异。是否有一个点头的例子来说明他们的工作?

Answers:


154

我认为我们可以通过一个例子更好地理解这一点。参见此类:

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下拉列表中包含的条目将成为对象的Name属性Employee

要了解其他两个,您应该首先了解SelectedItemSelectedItem将从中返回当前选择的Employee对象ComboBox。您还可以分配SelectedItem一个Employee对象以在中设置当前选择ComboBox

SelectedValuePath指向Id,这意味着您可以使用来获取Id当前选定EmployeeSelectedValue。您还可以通过将设置为来设置当前Employee在中选择的内容(我们假设它将出现在列表中)。ComboBoxSelectedValueIdEmployees


11
这是我所见过的最简洁,最容易理解的解释。
JoelWilson 2014年

1
注意:此示例将不起作用,因为Id并且Name必须是属性,而不是类字段。
Shorstok,

3
你是对的。该类仅用于显示伪代码。解决它。
Yogesh

@Yogesh IMO,for me这个答案更好,更简洁,更容易理解。我说过,for me因为我们都有不同的理解方式。也许,其他一些读者更容易理解另一个答案。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.