我有一个带有组合框的简单WPF;当我使用新数组作为itemssource(代码中的COMMENTED LINE)时,可以通过设置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>
DisplayMemberPath
仅控制需要显示的内容; SelectedValue
将仍然是您的Model
类型。您需要设置cmbVendors.SelectedValuePath = "Name";
这将确保您的cmbVendors
的SelectedValue
将保持Name
。
所以我该怎么办? (我是WPF编程的新手)