2011-05-19 48 views
0

我有一個類testviewModel實施INotifychanged事件及其所有proeprties。MVVM不刷新數據網格內容

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;

它顯示datagrid中的記錄與testViewModel的屬性。

但是,當我觸發刪除事件,它從數據庫中刪除,但它不會更新用戶界面或刷新數據網格。

我打電話給DataGrid.Items.Refresh();

我是否需要特別從可觀察集合中刪除? xaml中有什麼我需要做的嗎?

回答

2

我是否需要特別從可觀察集合中刪除?

是的,因爲這就是DataGrid的約束。它不可能知道你已經從數據庫中刪除了一條記錄。只要財產本身引發了一個PropertyChanged事件,您也可以完全更換集合,但只需從集合中刪除該項目即可。

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