DevExpress的GridControl控件更新數據問題解決辦法

開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時
會同步更新後臺數據。今天在開發時遇到一種情況,當通過GridControl中Row上Button【Command】改變行內數據,也就是binding的Detail數據已
改變,這時NotifyPropertyChanged有觸發,但改變的行數據不會同步更新到UI上,目前測試有兩種方式進行解決。

1.直接new 一個新的行數據對象

2.通過Messenger類發送通知至UI頁面, UI註冊通知,收到通知後執行 GridControl[GridControl 名稱].RefrshData()方法,進行刷新

部分測試代碼:

第一種:

public RelayCommand<GridRowVal> MyCommand
        {
            get
            {
                return _myCommand
                    ?? (_myCommand = new RelayCommand<GridRowVal>(
                                          p =>
                                          {
                                              
                                              var row = this.GridData.SingleOrDefault(q => q.Name == p.Name);
                                              if (row != null)
                                              {
                                                  int index = this.GridData.IndexOf(p);

                                                  this.GridData[index] = new GridRowVal
                                                  {
                                                      Name = p.Name + "test",
                                                      IsCheck = p.IsCheck,
                                                      Memo = p.Memo
                                                  };
                                              }
                                          }));
            }
        }

第二種:

public RelayCommand<GridRowVal> MyCommand
        {
            get
            {
                return _myCommand
                    ?? (_myCommand = new RelayCommand<GridRowVal>(
                                          p =>
                                          {
                                              var row = this.GridData.SingleOrDefault(q => q.Name == p.Name);
                                              if (row != null)
                                              {
                                                  row.Name = p.Name+"abc";

                                                  Messenger.Default.Send<string>("Refresh");
                                              }
                                          }));
            }
        }

//頁面.cs 構造函數中
Messenger.Default.Register<string>(this, p => {
                if (p == "Refresh")
                {
                    GridControl1.RefreshData();
                }
            });

備註:項目中使用了MVVMLight框架, 記錄用。

转载于:https://www.cnblogs.com/ywkpl/p/3818544.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值