WPF Datagrid绑定数据

当使用DataGrid绑定到实现了INotifyPropertyChanged的List时,列表的更改会自动刷新视图。然而,如果T类型没有实现该接口,其内部属性的改变不会触发绑定更新。要解决这个问题,T类需要继承BindableBase并实现属性更改通知。例如,ResultData类中,属性Total依赖于B和C,因此在B和C赋值时需调用Refresh方法来更新Total。
摘要由CSDN通过智能技术生成

datagrid绑定属性如下(已实现INotifyPropertyChanged),对List<T>进行赋值,会刷新绑定,但是对T(未实现INotifyPropertyChanged)进行赋值,不会刷新绑定

private List<ResultData> _dataList = new List<ResultData>();
        public List<ResultData> DataList
        {
            get { return _dataList; }
            set { SetProperty(ref _dataList, value); }
        }

要想T发生变更时刷新绑定,需要对T实现INotifyPropertyChanged

public class ResultData : BindableBase
    {
        
        private int _total;
        public int Total
        {
            get { return _total; }
            set { SetProperty(ref _total, value); }
        }
}

要想T中属性A根据T中属性B变化而变化,还要在B赋值时刷新A数据

public class ResultData : BindableBase
    {
        

        private int _total;
        public int Total
        {
            get { return _total; }
            set { SetProperty(ref _total, value); }
        }


        private int _b;
        public int B
        {
            get { return _b; }
            set { SetProperty(ref _b, value); Refresh(); }
        }


        private int _c;
        public int C
        {
            get { return _c; }
            set { SetProperty(ref _c, value); Refresh(); }
        }

        private void Refresh()
        {
            Total = B + C;                 
        }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值