码迷,mamicode.com
首页 > Windows程序 > 详细

WPF MVVM ListView动态绑定数据

时间:2019-10-16 09:18:21      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:wrap   height   span   -keep   mode   none   containe   inline   listview   

技术图片技术图片?

界面

技术图片技术图片?

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView ItemsSource="{Binding Path=PersonCollectionView}">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Name}">
                        <GridViewColumnHeader Command="{Binding Path=SortCommand}" 
                                              CommandParameter="Name">姓名</GridViewColumnHeader>
                    </GridViewColumn>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Age}">
                        <GridViewColumnHeader Command="{Binding Path=SortCommand}" 
                                              CommandParameter="Age">年龄</GridViewColumnHeader>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>
技术图片

.cs

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainWindowViewModel();
        }
    }
技术图片

 

新建一个 Person类

 public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
技术图片

MainWindowViewModel

 public class MainWindowViewModel
    {
        public MainWindowViewModel()
        {
            personCollection.Add(new Person() { Name = "刘二", Age = 17 });
            personCollection.Add(new Person() { Name = "张三", Age = 18 });
            personCollection.Add(new Person() { Name = "李四", Age = 17 });
            personCollection.Add(new Person() { Name = "王五", Age = 19 });
            personCollection.Add(new Person() { Name = "周六", Age = 18 });
            personCollection.Add(new Person() { Name = "胡二", Age = 16 });
            personCollection.Add(new Person() { Name = "黄七", Age = 14 });
            personCollection.Add(new Person() { Name = "朱八", Age = 15 });
            personCollection.Add(new Person() { Name = "周四", Age = 13 });
            this.SortCommand = new DelegateCommand<string>(this.Sort);
        }

        private ObservableCollection<Person> personCollection = new ObservableCollection<Person>();

        private ICollectionView personCollectionView;
        public ICollectionView PersonCollectionView
        {
            get
            {
                if (personCollectionView == null)
                {
                    personCollectionView = CollectionViewSource.GetDefaultView(personCollection);
                }
                return personCollectionView;
            }
        }

        public DelegateCommand<string> SortCommand { get; private set; }

        private void Sort(string obj)
        {
            if (PersonCollectionView.SortDescriptions.Count > 0 &&
                PersonCollectionView.SortDescriptions[0].PropertyName == obj &&
                PersonCollectionView.SortDescriptions[0].Direction == ListSortDirection.Ascending)
            {
                PersonCollectionView.SortDescriptions.Clear();
                PersonCollectionView.SortDescriptions.Add(new SortDescription(obj, ListSortDirection.Descending));
            }
            else
            {
                PersonCollectionView.SortDescriptions.Clear();
                PersonCollectionView.SortDescriptions.Add(new SortDescription(obj, ListSortDirection.Ascending));
            }
        }
    }
技术图片

效果

技术图片技术图片?

WPF MVVM ListView动态绑定数据

标签:wrap   height   span   -keep   mode   none   containe   inline   listview   

原文地址:https://www.cnblogs.com/CityOfThousandFires/p/11682088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!