• 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框架, 記錄用。

  • 相关阅读:
    rsync
    2个网卡流量的变化
    服务器端FIN的条件
    The third column indicates whether subclasses of the class declared outside this package have access to the member.;
    Java反序列化与远程代码执行

    address sizes : 46 bits physical, 48 bits virtual
    intptr_t、uintptr_t数据类型的解析
    Why should we typedef a struct so often in C?
    源码 502 回溯
  • 原文地址:https://www.cnblogs.com/ywkpl/p/3818544.html
Copyright © 2020-2023  润新知