我试图将我的组合框项目源绑定到一个集合。
public BindableCollection<NaicsCodeDTO> PriNaics { get; set; }
<ComboBox Grid.Row="1" Grid.Column="0" x:Name="PriNaics" ItemsSource="{Binding PriNaics}"/>
查询
PriNaics = new BindableCollection<NaicsCodeDTO>(
ctx.NaicsCodes.Where(x => x.Parent == null).Select(x => new NaicsCodeDTO{ Id = x.Id, Name = x.Name }));
OnPropertyChanged("PriNaics");
当我检查组合框时,它只显示(NameSpace).NaicsCodeDTO,而不是确切的值。 我尝试了什么:
<ComboBox Grid.Row="1" Grid.Column="0" x:Name="PriNaics" ItemsSource="{Binding PriNaics.Name}"/>
NaicCodeDTO.cs:
public class NaicsCodeDTO : IDTO
{
// Primary Key --------------------------------------------------------
public int Id { get; set; }
// Fields -------------------------------------------------------------
public int MinCode { get; set; }
public int MaxCode { get; set; }
public string Name { get; set; }
}
我只是想知道如何修复绑定,我认为这是一个非常小而愚蠢的事情......
答案 0 :(得分:3)
将 DisplayMemberPath
设置为comboBox上的 Name
属性:
<ComboBox Grid.Row="1" Grid.Column="0" x:Name="PriNaics"
ItemsSource="{Binding PriNaics}"
DisplayMemberPath="Name"/>
默认情况下,comboBox在绑定对象上调用ToString(),它将打印您的类的全名。因此,您会将(NameSpace).NaicsCodeDTO
视为输出。
使用DisplayMemberPath,您明确告诉comboBox与整个对象绑定,但在UI上显示Name属性。
获取或设置源对象上的值的路径以用作 对象的直观表示。