C# WPF列表框SelectedItems

C# WPF列表框SelectedItems,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,如何获取列表框中选定项的值 我试过这样的方法: foreach (var item in combo_course_op.SelectedItems) { string s = "select cid from tms_course where course_title = '" + item.ToString() + "'"; } 但它不起作用。它将字符串s显示为“从tms\u课程中选择c

如何获取列表框中选定项的值

我试过这样的方法:

            foreach (var item in combo_course_op.SelectedItems)
            {
                string s = "select cid from tms_course where course_title = '" + item.ToString() + "'";
            }
但它不起作用。它将字符串s显示为“从tms\u课程中选择cid,其中课程\u title='System.Data.DataRowView'”

我哪里做错了

以下是我绑定数据的方式:

MyCommand = new OdbcCommand("select distinct module_name from tms_class_schedule where class_date ='"+selectedDate+"'", DBConnect.MyConnection);
            dap = new OdbcDataAdapter(MyCommand);
            DS = new DataSet();
            dap.SelectCommand = MyCommand;
            dap.Fill(DS);
            combo_course_op.DataContext = DS.Tables[0].DefaultView;
            combo_course_op.DisplayMemberPath = DS.Tables[0].Columns["module_name"].ToString();

您可以将
转换为其实际类型:

        foreach (var item in combo_course_op.SelectedItems)
        {
            string s = "select cid from tms_course where course_title = '" +
               ((Course)item).Title + "'";
        }
或者重写
Course.ToString
,使其返回标题

编辑(注意到
数据行视图后


将DataRowViews放入WPF组合框看起来是一个非常糟糕的id。也许您应该阅读一两篇关于WPF和MVVM的教程。

显然,您的列表框绑定到某个数据源。这意味着列表框中的项目不是字符串,而是
DataRowView
的实例。您可以按如下方式强制转换和获取底层数据对象:

DataRowView drv = (DataRowView)item;
<TheRealType> itemOfMyType = (<TheRealType>)drv.Row;
DataRowView drv=(DataRowView)项;
itemOfMyType=()drv.Row;

其中
是绑定到列表框的项目的实际数据类型。

在代码中,DisplayMemberPath设置为列[“模块名称”]

foreach (var item in combo_course_op.SelectedItems)
{
    string s = "select cid from tms_course where course_title = '" 
             + (item["Title"] as string) + "'"; // if Title is column name. Otherwise replace "Title" with actual column header name
}
从这一点推断,以下几点应该有效:

foreach (var item in combo_course_op.SelectedItems)
{
   string s = "select cid from tms_course where course_title = '" + item["module_name"].ToString() + "'";
}

所选项目是DataRow,因此您必须为要返回的值获取正确的列。

实际上,将
DataRowView
放入WPF列表框是.NET framework在列表框为数据绑定时的默认行为;我编辑了这个问题,请检查您是如何收到物品的。(即combo\u course\u op.SelectedItems type)Hi tilak,我将listbox更改为listview。我认为我的数据绑定方法有一些错误。List moduleNames=新列表();而(MyReader.Read()){moduleNames.Add(MyReader.GetString(0));}combo_course_op.ItemsSource=moduleNames;现在你的方法很好…:)别无选择,无法发表评论。你们把模块名作为列,他用了标题…不确定这是否给你们带来了问题。只得到49分,所以无法回复并询问..Y?他在他的帖子里提到了什么是标题。无论如何谢谢你:祝你好运