欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

继续聊WPF——如何获取ListView中选中的项

程序员文章站 2022-04-05 15:20:00
...

欢迎加入微群 DotNet中国:http://qun.t.qq.com/67176884

在WPF中获Listview中选中的项,与WinForm里面有着很大的区别,要亲身去研究一下在WPF中如果处理,其实也不难,来,下面我们一起来通过一个简单的示例来感悟一下吧。

第一步就是建立一个WPF应用程序项目,这个不用描述了,节省了31个字。

第二步,为了实现数据绑定,先写一个简单的员工类,包含三个属性——姓名、年龄、城市。

    public class Emp
    {
        public string Name { get; set; }

        public int Age { get; set; }

        public string City { get; set; }
    }


第三步,写前台XAML,布局窗体和ListView。

    <Grid>
        <ListView x:Name="lv" SelectionChanged="lv_SelectionChanged">
            <ListView.View>
                <GridView AllowsColumnReorder="True">
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="姓名"
                                    Width="65"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Age}" Header="年龄"
                                    Width="65"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=City}" Header="所在城市"
                                    Width="70"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>


第四步,在窗体的loaded事件中绑定数据。

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            lv.ItemsSource = new Emp[]{
                new Emp{Name="小明",Age=16,City="北京"},
                new Emp {Name="小红",Age=20, City="天津"},
                new Emp{ Name="小环", Age=21, City="杭州" },
                new Emp { Name="小高", Age=23, City="东莞" }
            };
        }


第五步,我们要知道,ListView的选定项是什么类型的。

        private void lv_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MessageBox.Show(lv.SelectedItem.GetType().ToString());
        }


继续聊WPF——如何获取ListView中选中的项

第六步,这回爽歪歪了,原来Listview选定的项类型就是我们给它绑定的类型,也就是说,如果我们把A类绑定到控件,选定项就是一个A类的实例。

        private void lv_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Emp emp = lv.SelectedItem as Emp;
            if (emp != null && emp is Emp)
            {
                MessageBox.Show("员工姓名:" + emp.Name +
                    "\n\n" + "员工年龄:" + emp.Age.ToString() + "\n\n" +
                    "城市:" + emp.City);
            }
        }


继续聊WPF——如何获取ListView中选中的项