如何从组合框获取文本,例如项目[1]

时间:2018-08-23 07:37:17

标签: c# wpf text combobox get

当我使用此代码时:“ 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 ";

3 个答案:

答案 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();