【问题标题】:MVVM is not refreshing datagrid contentsMVVM 不刷新数据网格内容
【发布时间】:2011-05-19 17:33:43
【问题描述】:

我有一个 testviewModel 类,它实现了 INotifychanged 事件及其所有属性。

public class testViewModel:INotifychanged
{
    public string ServiceTag
    {
        get { return _serviceTag; }
        set { _serviceTag = value;
        PropertChanged("ServiceTag");}
    }


}
public event PropertyChangedEventHandler PropertyChanged;

    private void PropertChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }

我有一个绑定到 viewModel 属性的数据网格。

在窗口加载 Im 绑定时使用如下:

DataGrid.ItemsSource = ObservableCollection;

它会在数据网格中显示带有 testViewModel 属性的记录。

但是当我触发删除事件时,它会从数据库中删除,但不会更新 UI 或刷新数据网格。

我正在调用 DataGrid.Items.Refresh();

我是否必须专门从 observable 集合中删除? 在 xaml 中我有什么需要做的吗?

【问题讨论】:

    标签: c# wpf mvvm datagrid


    【解决方案1】:

    我是否必须专门从可观察集合中删除?

    是的,因为这就是 DataGrid 所绑定的。它不可能知道您已经从数据库中删除了一条记录。只要属性本身引发PropertyChanged 事件,您也可以完全更改集合,但您应该简单地从集合中删除该项目。

    【讨论】:

      【解决方案2】:
      update your ObservableCollectionmembers too
      Eg: 
      
      private ObservableCollection<Member> memberCollection;
              public ObservableCollection<Member> MemberCollection
              {
                  get { return memberCollection; }
                  set { memberCollection = value;
                      OnPropertyChanged();
                  }
              }
      
      public void SaveMember()
              {
                  try
                  {
                      _bussiness.Update(SelectedMember);
                      MemberCollection.Add(SelectedMember);
                      ShowMessageBox(this, new MessageEventArgs()
                      {
                          Message = "Changes are saved !"
                      });
                  }
                  catch (Exception ex)
                  {
                      ShowMessageBox(this, new MessageEventArgs()
                      {
                          Message = ex.Message
                      });
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        相关资源
        最近更新 更多