wpf listview显示数据源的一列

listview作为数据显示的控件被广泛应用在wpf客户端中,可以说非常好用,最近做一个变量连接的项目,需要显示底层模块的id号,用到了listview,其实用listbox也可以,不过上个项目刚用过listview,所以这个项目接着使用,遇到了一些问题,首先我想只显示一列就可以了,所以,下面看代码

public partial class MainWindow : Window
    {
        List Emps = new List();
        string[] NodeList = new string[]{"01", "02", "03"};
        List students = new List();

        public MainWindow()
        {
            InitializeComponent();
            Emps.Add(new Emp() { Name = "xiaoma", Age = "20", City = "hangzhou" });
            Emps.Add(new Emp() { Name = "xiaowang", Age = "17", City = "yantai" });
            Emps.Add(new Emp() { Name = "xiaodi", Age = "19", City = "suzhou" });

            //students.Add(new Student() { Name = "xiaoma" });
            //students.Add(new Student() { Name = "xiaowang" });
            //students.Add(new Student() { Name = "xiaoli"});

            listViewOne.ItemsSource = Emps;
            

        }

我想左侧的listview显示人名,然后右边的list view显示年龄和城市,但是显示的时候左侧的只是显示了项目名和类名,并没有显示我想要的东西。断点调试中发现问题如下

wpf listview显示数据源的一列_第1张图片

 前端并没有设置 GridViewColumn,所以这个应该是直接找到了父节点,显示RepeatTest.test.

接着为listveiw指定显示的路径,代码如下

public MainWindow()
        {
            InitializeComponent();
            Emps.Add(new Emp() { Name = "xiaoma", Age = "20", City = "hangzhou" });
            Emps.Add(new Emp() { Name = "xiaowang", Age = "17", City = "yantai" });
            Emps.Add(new Emp() { Name = "xiaodi", Age = "19", City = "suzhou" });

            //students.Add(new Student() { Name = "xiaoma" });
            //students.Add(new Student() { Name = "xiaowang" });
            //students.Add(new Student() { Name = "xiaoli"});

            listViewOne.DisplayMemberPath = "Name";
            listViewOne.ItemsSource = Emps;
            

        }

则能正常显示想要的属性。这种通过后代代码去指定显示内容而不是在前端写死其实是有风险的,而且难度也大尤其是在反复点击不同的item时会出现前一个点击显示的内容并没有消失的问题,这种对于新手来说真的很普遍,而且网上也并没有提供很直白的解说,需要自己不断的去犯错总结,讲道理很耗时间,不过明白后就很难忘记了,自己犯错总结得到的比从别人那里听到的要记得牢很多,但有条件的话我还是想听别人疼的,这种太耗时间了,而且这时候显示出来书本内容的伟大了,真的理论和重要,网上那些都是些快餐,书本中理论还是要加强学习

你可能感兴趣的:(WPF,c#,listview)