ListView - 从所选项目中获取列值

时间:2014-01-29 04:00:51

标签: c# wpf listview

我正在努力避免数据绑定,因为我不理解它并需要完成这个...但我正在尝试的一切似乎都不起作用。例如,我想要打印出所选项目的第二列..但是我在google上看到的所有内容都表示当我的某些因为某些原因没有一个时使用SubItems?

<ListView Name="myListView" MouseDoubleClick="myListView_MouseDoubleClick_1">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="H1" DisplayMemberBinding="{Binding Col1}"/>
                    <GridViewColumn Header="H2" DisplayMemberBinding="{Binding Col2}"/>
                    <GridViewColumn Header="H3" DisplayMemberBinding="{Binding Col3}"/>
                </GridView>
            </ListView.View>
        </ListView>

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            myListView.Items.Add(new { Col1 = "test1", Col2 = "Test2", Col3 = "test3" });
        }

        private void myListView_MouseDoubleClick_1(object sender, MouseButtonEventArgs e)
        {
            //THIS DOESN'T WORK, SubItems doesn't exist?
            myListView.SelectedItems[0].SubItems[0].Text.ToString();

        }

2 个答案:

答案 0 :(得分:5)

尝试将SelectedItem转换为特定类型。之后,您将能够访问该项目的全部属性。由于您在此处有匿名类型,请尝试将其强制转换为dynamic

var selectedItem = (dynamic)myListView.SelectedItems[0];
MessageBox.Show(selectedItem.Col3);

答案 1 :(得分:1)

对我来说,它的工作原理如下:

myListView.SelectedItems[0].SubItems[1].Text;

但是,我从sql数据库填充listview。 你只是创建项目,但没有子项目。以下是参考,如何创建:

https://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.subitems(v=vs.110).aspx