当我使用此代码时:“ var z = comboBox.Items [1] .ToString();”然后在“ MessageBox”中显示z,我收到此消息“ DataMdellayer.custumer”,但我想要第1项的文本
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="57,63,0,0" VerticalAlignment="Top" Width="120"/>
和
comboBox.ItemsSource = database.Customers.ToList();
comboBox.DisplayMemberPath = "CustomerSay";
comboBox.SelectedValuePath = "CustomerID ";
答案 0 :(得分:1)
您正在使用CustomerSay
的{{1}}属性来显示值。
当你说:
Customers
您正在将var z = comboBox.Items[1].ToString();
转换为Costumer
但是,考虑到您想要该客户的string
属性,您必须寻找它。
所以您必须将ComboBoxItem投射到Costumer
CostumerSay
然后查找属性
(Customer)comboBox.Items[1]
答案 1 :(得分:0)
1-您可以按照@Marko所说的那样将项目投射到数据源对象(客户)上。
2-使用MVVM并将您的组合框绑定到ViewModel属性。 WPF具有强大的绑定系统来实现MVVM。
3-您可以覆盖Customer类的ToString方法:
public class Customer
{
public override string ToString()
{
return CustomerSay;
}
}
我更喜欢第二种解决方案,但是如果您不想使用MVVM模式,@ Marko的解决方案会更好。
答案 2 :(得分:-2)
在c#中,项目1的索引从零开始,因此如下所示更改代码,以获取项目
var z = comboBox.Items [0] .ToString();