我有一个类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有什么需要做的吗?
答案 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
});
}
}