简体   繁体   English

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

[英]ListView - Grabbing a column value from the selected item

I'm trying to avoid databinding as i don't understand it and need to get this finished.. but everything I'm trying doesn't seem to work. 我正在尝试避免数据绑定,因为我不了解它并且需要完成此操作。但是我正在尝试的所有操作似乎都无法正常工作。 For example i'd like to print out the 2nd column of the selected item.. but everything I see on google says to use SubItems when mine doesn't have one for some reason? 例如,我想打印出所选项目的第二列。.但是我在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();

        }

Try to cast SelectedItem to specific type. 尝试将SelectedItem为特定类型。 After that you'll be able to access full set of the item's properties. 之后,您将可以访问该项目的全部属性。 Since you have anonymous type here, try to cast it to dynamic : 由于您在此处具有匿名类型,请尝试将其强制转换为dynamic

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

For me, it worked like this: 对我来说,它像这样工作:

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

However, I fill the listview from sql database. 但是,我从sql数据库填充listview。 You just create items, but no subitems. 您只创建项目,但没有子项目。 Here is the reference, how to create: 这是参考,如何创建:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM