首页 > 解决方案 > BindableCollection 显示字符串但从 ComboBox 获取 int

问题描述

我有一个BindableCollectio<string>项目:

public BindableCollection<string> ProjectsList { get; set; }
public string SelectedProjectsList { get; set; } //project selected form combobox

现在我只有项目名称。我将该列表绑定到 simple ComboBoxin WPF

 <ComboBox x:Name="ProjectsList" SelectedValuePath="{Binding Path=SelectedProjectsList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

Project模型如下所示:

public class Project
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }
}

PorjectsListi 中只存储Project.

我的问题是,我们可以从BindableCollection项目中检索id并仍然在组合框列表上显示项目名称吗?或者也许有更好的解决方案CaliburnMicro

标签: c#caliburn.micro

解决方案


您可以为此目的使用SelectedValuePathDisplayMemberPath。您应该首先将ProjectsListProperty 更改为 type ofBindableCollection<Project>.

public BindableCollection<Project> ProjectsList { get; set; }
public int SelectedProjectsList { get; set; }

现在,您的 Xaml

 <ComboBox ItemsSource="{Binding Path=ProjectsList}" DisplayMemberPath="Name" 
                  SelectedValue ="{Binding SelectedProjectsList, UpdateSourceTrigger=PropertyChanged}" 
                  SelectedValuePath="Id"/>

这将能够在选择项目时显示Name在 Combobox 中。Id


推荐阅读