MVVM不刷新数据网格内容

时间:2011-05-19 17:33:44

标签: c# wpf mvvm datagrid

我有一个类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));
        }
    }

我有一个datagrid,它绑定到viewModel的属性。

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

DataGrid.ItemsSource = ObservableCollection;

它显示了datagrid中具有teh testViewModel属性的记录。

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

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

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

2 个答案:

答案 0 :(得分:2)

  

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

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

答案 1 :(得分:0)

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
                });
            }
        }