【WPF】WPF DataGrid List数据源 双向绑定通知机制之ObservableCollection使用以及MultiBinding 的应用...

本文介绍了在WPF中,如何使用ObservableCollection实现DataGrid与List数据源的双向绑定,强调了List无法实现数据添加和删除的双向绑定问题。通过代码示例展示了Model、ViewModel和XMAL的设置,并且扩展讨论了如何使用MultiBinding将两个属性绑定到一个文本框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下代码实现了DataGrid的简单绑定List数据源

重点要提一下的是,绑定List数据源,但是不能直接用List。比如下面的代码,使用List<GridItem>只能实现数据修改的绑定,但是数据添加,删除都无法实现双向绑定。所以这里要改用ObservableCollection<GridItem>,其他代码都不用改。只要类型改下即可,WPF内部已经实现了添加,删除等的双向绑定功能。

接下去,就直接上代码了....

1、Model

public class GridModel
    {

        public GridModel()
        {
            GridData = new ObservableCollection<GridItem>();
        }
        public ObservableCollection<GridItem> GridData
        {
            get
            {
                return _griddata;
            }
            set
            {
                _griddata = value;
            }
        }

        private ObservableCollection<GridItem> _griddata;
    }
GridItem数据类
public class GridItem : INotifyPropertyChanged
    {
        public GridItem(string name, string sex, bool chk = false)
        {
            Name = name;
            Sex = sex;
            UserChecked = chk;
        }
        public string Name
        {
            get { return _name; }
            set {
                if (_name != value)
                {
                    _name = value;
                    OnPropertyChanged("Name");
                }
            }
        }
        public string Sex
        {
            get { return _sex; }
            set
            {
                if (_sex != value)
                {
                    _sex = value;
                    OnPropertyChanged("Sex");
                }
            }
        }
        public bool UserChecked
        {
            get { return _userchecked; }
            set
            {
                if (_userchecked != value)
                {
                    _userchecked = value;
                    OnPropertyChanged("UserChecked");
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        private string _name;
        private string _sex;
        private bool _userchecked;
    }

2、ViewModel

public class GridViewModel
    {
        public GridViewModel()
        {
            GridSource = new GridModel();
            GridSource.GridData.Add(new GridItem("王路飞
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值