c# - BindableCollection 显示字符串但从 ComboBox 获取 int
问题描述
我有一个BindableCollectio<string>
项目:
public BindableCollection<string> ProjectsList { get; set; }
public string SelectedProjectsList { get; set; } //project selected form combobox
现在我只有项目名称。我将该列表绑定到 simple ComboBox
in 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; }
}
在PorjectsList
i 中只存储Project
.
我的问题是,我们可以从BindableCollection
项目中检索id
并仍然在组合框列表上显示项目名称吗?或者也许有更好的解决方案CaliburnMicro
?
解决方案
您可以为此目的使用SelectedValuePath和DisplayMemberPath。您应该首先将ProjectsList
Property 更改为 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
推荐阅读
- javascript - 反向事件监听器
- reactjs - Storybook 无法读取未定义的属性“displayName”
- python - OperationalError: (pymysql.err.OperationalError) (1129, "IP' 由于许多连接错误而被阻止;使用 'mysqladmin flush-hosts' 解除阻止")
- rust - Serde-yaml 结构列表
- android - currentBackStackEntry?.savedStateHandle?.getLiveData 在尝试向后移动数据时未收到有关更改的通知
- mysql - 将计算列添加到 mySQL 表
- audiokit - AppleSequencer 导出 m4a 格式文件错误 使用 Audiokit 时?
- git - 什么是散列在:git hash-object abc.txt?
- validation - Kotlin 中的 Javax 验证自定义枚举约束
- java - 反应堆代码 SwithIfEmpty 和 Mono 在 Java 中没有按预期工作