[英]Set Selected value on combobox in WPF
我有一个简单的 WPF 和一个 combobox; 当我使用新数组作为项目源(代码中的注释行)时,我可以通过设置SelectedValue="..."
(来自另一个查询结果的字符串。但是当我使用查询并从数据库读取时。添加项目有效,但设置SelectedValue
作业不起作用!
我的xaml.cs
代码:
tempdbEntities mydb = new tempdbEntities();
public MainWindow()
{
InitializeComponent();
FillForm(1);
}
private void Window_Activated(object sender, EventArgs e)
{
//cmbVendors.ItemsSource = new string[] { "ABC", "BCD", "EFG" };
cmbVendors.ItemsSource = mydb.tbl_Company.Where(c => c.Id < 5).ToList();
cmbVendors.DisplayMemberPath = "Name";
}
private void FillForm(int ID0)
{
cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;
}
Xaml 代码:
<Grid Margin="0,-41,0,0">
<ComboBox Name="cmbVendors" HorizontalAlignment="Left"
Margin="474,102,0,0" VerticalAlignment="Top"
Width="231"/>
</Grid>
Combobox 的DisplayMemberPath
将只控制需要显示的内容; SelectedValue
仍然是您的Model
类型。 你需要设置
cmbVendors.SelectedValuePath = "Name";
这将确保您的cmbVendors
的SelectedValue
将持有Name
。
我想要做什么:这是一个编辑表单。 加载表单时,应通过表格中的数据填充表单、文本框、组合框...中的所有组件。 cmbVendors 和其他组件一样应该显示从 DB 获取的内容,如果用户想更改它,他可以做到。 然后点击提交......
我已经编辑了 FillForm 方法,如下所示:
private void FillForm(int ID0)
{
cmbVendors.SelectedValuePath = "Name";
cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;
}
谢谢。 它运作良好!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.