如何从集合列表中删除项目并正确捕获CollectionChanged事件并在那里执行某些操作

时间:2017-03-29 08:25:33

标签: c# wpf datagrid observablecollection

我使用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一起工作,所以我可能做错了吗?

谢谢你们 干杯

0 个答案:

没有答案