WPF 表格列表 数据绑定

前端代码

    <Grid>
        <ListView x:Name="ListView1">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="序号" Width="60" DisplayMemberBinding="{Binding Id}"/>
                    <GridViewColumn Header="姓名" Width="60" DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Header="性别" Width="60" DisplayMemberBinding="{Binding Sex}"/>
                    <GridViewColumn Header="电话" Width="60" DisplayMemberBinding="{Binding Pone}"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>

方法1
通过DataTable类进行绑定

using System.Data;
using System.Windows;
using System.Collections.ObjectModel;
using System.Windows.Controls;
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        DataTable dt1;
        public MainWindow()
        {
            InitializeComponent();
            dt1 = Creat();
            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt1.NewRow();
                dr[0] = 1;
                dr[1] = "张三";
                dr[2] = 0;
                dr[3] = "123456789";
                dt1.Rows.Add(dr);//向虚表里添加一行数据
            }
            //绑定数据
            ListView1.DataContext = dt1;
            ListView1.SetBinding(ListView.ItemsSourceProperty, new Binding());
        }
        //行数据虚表
        public DataTable Creat()
        {
            DataTable dt = new DataTable();
            DataColumn[] dc = new DataColumn[] {
                new DataColumn("Id"),
                new DataColumn("Name"),
                new DataColumn("Sex"),
                new DataColumn("Pone")
            };
            dt.Columns.AddRange(dc);
            return dt;
        }
    }

方法二
通过 INotifyPropertyChanged 类进行绑定
List集合需要定义为 ObservableCollection类型

  • 1.定义绑定数据类
//定义一个Data数据类并继承于INotifyPropertyChanged 
public class Data : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public Data()
        {
            _id = Id;
            _name = Name;
            _sex = Sex;
            _pone = Pone;
        }

        private int _id;
        public int Id
        {
            get { return _id; }
            set
            {
                if (_id != value) ;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Id"));
            }
        }
        private string _name;
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));
            }
        }
        private int _sex;
        public int Sex
        {
            get { return _sex; }
            set
            {
                _sex = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Sex"));
            }
        }
        private string _pone;
        public string Pone
        {
            get { return _pone; }
            set
            {
                _pone = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Pone"));
            }
        }
    }
  • 2.实现数据绑定
using System.ComponentModel;
using System.Data;
using System.Windows;
using System.Collections.ObjectModel;
using System.Windows.Controls;

namespace AvaloniaUI
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        private static ObservableCollection<Data> List =new ObservableCollection<Data>();
        public MainWindow()
        {
            InitializeComponent();
            ListView1.ItemsSource = List;

            List.Add(new Data() { Id = 1, Name = "张三", Sex = 0, Pone = "123456789" });
        }
    }

方法二对比方法一使用上更零活,而且数据为双向绑定,优先选择方法二

你可能感兴趣的:(C#学习日志,wpf)