BindableApplicationBar.BindableApplicationBar.MenuItemsSourceCollectionChanged C# (CSharp) Method

MenuItemsSourceCollectionChanged() private method

private MenuItemsSourceCollectionChanged ( object sender, NotifyCollectionChangedEventArgs e ) : void
sender object
e System.Collections.Specialized.NotifyCollectionChangedEventArgs
return void
        private void MenuItemsSourceCollectionChanged(
            object sender, NotifyCollectionChangedEventArgs e)
        {
            if (e.OldItems != null)
            {
                foreach (var menuItemSource in e.OldItems)
                {
                    // Copy item reference to prevent access to modified closure
                    var dataContext = menuItemSource;
                    var menuItem =
                        this.menuItemsSourceMenuItems.FirstOrDefault(
                            b => b.DataContext == dataContext);

                    if (menuItem != null)
                    {
                        this.menuItemsSourceMenuItems.Remove(menuItem);
                    }
                }
            }

            if (this.MenuItemsSource != null &&
                this.MenuItemTemplate != null &&
                e.NewItems != null)
            {
                foreach (var menuItemSource in e.NewItems)
                {
                    var menuItem = (BindableApplicationBarMenuItem)
                        this.MenuItemTemplate.LoadContent();

                    if (menuItem == null)
                    {
                        throw new InvalidOperationException(
                            "BindableApplicationBar cannot use the MenuItemsSource property without a valid MenuItemTemplate");
                    }

                    menuItem.DataContext = menuItemSource;
                    this.menuItemsSourceMenuItems.Add(menuItem);
                }
            }
        }
        #endregion