访问所选列表框项目的其他属性

时间:2018-08-01 00:58:30

标签: c# wpf

我已经搜索并搜索了此问题的答案。我以为我找到了这篇文章很接近: Get object information of selected listbox item

但是我在代码的这一部分仍然收到“无效的强制转换异常”错误:

string m = ((Customer)LBox.SelectedItem).ID;

到目前为止,这是我大部分的代码,在其中添加了数据类(linq至SQL)中的列表框项。卡住的地方是我想获取在列表框中选择的记录的DB_ID。

我有一个解决方法,可以在数据库上使用客户的名称LBox.SelectedItem值进行另一个SQL查询,但是我认为我必须做错了什么才能将SelectedItem值转换回Customer获取ID?

我刚开始使用C#,几乎一无所知,因此,我们将不胜感激。

DataClasses1DataContext dc = new DataClasses1DataContext(Properties.Settings.Default.DBConnectionString);

public MainWindow()
{
    InitializeComponent();
    var q = from accts in dc.Customers where accts.SysStatus == "Active" orderby accts.Customer select accts;

    if (dc.DatabaseExists())
        foreach (Customer c in q)
            LBox.Items.Add(c.Customer);
}

public void LBox_SelectionChanged (object sender, SelectionChangedEventArgs e)
{
    lblComp.Content = LBox.SelectedItem;
    string m = ((Customer)LBox.SelectedItem).ID;
}

我认为@Boxed在这里帮助我。

我将代码修改如下:

foreach (Surgeon c in q)
   LBox.Items.Add(c);
   LBox.DisplayMemberPath = "Customer";

然后,我能够像这样从客户类中获取值:

string m = ((Customers)LBox.SelectedItem).ID;
lblComp.Content = ((Customers)LBox.SelectedItem).Customer;
txtDetails.Text = m;

此代码是否理想,还是应该做其他事情?

0 个答案:

没有答案