如何从列表视图中检索单个值

时间:2013-10-13 16:01:07

标签: c# wpf

全新的C sharp原谅我这是一个愚蠢的问题。 我有一个简单的课程:

    public enum SexType { Male, Female };
        public class User
        {
            public string Name { get; set; }

            public int Age { get; set; }

            public string Mail { get; set; }

            public SexType Sex { get; set; }
        }

然后我使用该类通过分组来填充列表视图。

public Window4()
        {
            InitializeComponent();
            List<User> items = new List<User>();
            items.Add(new User() { Name = "John Doe", Age = 42, Sex = SexType.Male });
            items.Add(new User() { Name = "Jane Doe", Age = 39, Sex = SexType.Female });
            items.Add(new User() { Name = "Sammy Doe", Age = 13, Sex = SexType.Male });
            lvUsers.ItemsSource = items;

            CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);
            PropertyGroupDescription groupDescription = new PropertyGroupDescription("Sex");
            view.GroupDescriptions.Add(groupDescription);

        }

现在我想要做的就是当在列表视图中选择一个组时,我希望能够获取单个项目值。因此,如果我点击列表视图中的“John Doe”组,我希望能够获得Age(42)和Name(John Doe)。 所以我为listview转到了SelectedChanged方法,但是当我在listview中选择一条记录时,我无法得到单个值。 当SelectedChange触发并打开立即窗口时,如果我查看?listview.SelectedValue,我得到:     {} ListBoxSampleWPF.User         年龄:13岁         邮件:null         姓名:“Sammy Doe”         性别男     所以我知道价值观存在,但如果我尝试:     ?lvUsers.SelectedItems.Age;     我明白了: 'System.Collections.IList'不包含'Age'的定义,也没有扩展方法'Age'接受类型为'System.Collections.IList'的第一个参数'(你是否缺少using指令或程序集引用) ?)

请让我知道我做错了什么。 谢谢

1 个答案:

答案 0 :(得分:0)

是的,出现此错误的原因是您尝试从列表中获取类属性。试试以下

var obj=lvUsers.SelectedItems[0] as User;
if(obj!=null)
{
   var age=obj.Age;
}

希望这会有所帮助。