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