我使用observable collection来显示当前活跃客户的列表,
我在DataGrid
中显示了该列表,这是我的列表的外观
public ObservableCollection<Company> list = new ObservableCollection<Company>(Controller.SelectAll());
我想要实现的是:当用户从DataGrid中选择公司时,有一个按钮可以按下来删除 那个客户/公司。它看起来像这样(按钮&#39;事件,我从observablecollection中移除项目):
private void btnDeleteSelectedCustomer_Click(object sender, RoutedEventArgs e)
{
if (dtgMyCustomers.SelectedItem != null)
{
Company k = (Company)(dtgMyCustomers.SelectedItem);
list.Remove(k);
}
}
在此之后,我需要尽可能多地捕获Remove Action上的CollectionChanged事件? 在那里,我想从数据库中删除该项目,我认为它可能会是这样的:
public partial class Companies : Window
{
public ObservableCollection<Company> list = new ObservableCollection<Company>(Controller.SelectAll());
public Companies()
{
InitializeComponent();
list.CollectionChanged += (ss, ee) =>
{
if (ee.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove
&& ee.OldItems != null && ee.OldItems.Count > 0)
{
Company removedItem = ee.OldItems[0] as Company;
Controller.DeleteFromDatabaseById(removedItem.Id);
}
};
}
private void btnDeleteSelectedCustomer_Click(object sender, RoutedEventArgs e)
{
if (dtgMyCustomers.SelectedItem != null)
{
Company k = (Company)(dtgMyCustomers.SelectedItem);
list.Remove(k);
}
}
}
但不幸的是我做错了什么,因为当我在按钮点击事件中从数据库中删除项目时,CollectionChange没有触发 投手..
无论这是我第二次与ObservableCollections一起工作,所以我可能做错了吗?
谢谢你们 干杯