void MenuItemViewModels_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.OldItems != null) { foreach (var item in e.OldItems) { var model = (item as MenuItemViewModel); var view = _menuViewItems.FirstOrDefault(v => v.Key == model); _contentCanvas.Children.Remove(view.Value); _menuViewItems.Remove(view.Key); updateRendering(); } } else if (e.NewItems != null) { foreach (var item in e.NewItems) { var menuItemView = new MenuItemView() { DataContext = (item as MenuItemViewModel) }; var model = (item as MenuItemViewModel); _menuViewItems.Add(model, menuItemView); _contentCanvas.Children.Insert(0, menuItemView); updateRendering(); } } }
void MenuView_DataContextChanged(FrameworkElement sender, Windows.UI.Xaml.DataContextChangedEventArgs e) { if (e.NewValue != null) { _menuViewItems.Clear(); _contentCanvas.Children.Clear(); var model = (e.NewValue as MenuViewModel); model.PropertyChanged -= MenuViewModel_PropertyChanged; model.PropertyChanged += MenuViewModel_PropertyChanged; model.MenuItemViewModels.CollectionChanged -= MenuItemViewModels_CollectionChanged; model.MenuItemViewModels.CollectionChanged += MenuItemViewModels_CollectionChanged; model.Updated -= Model_Updated; model.Updated += Model_Updated; foreach (var item in model.MenuItemViewModels) { var menuItemView = new MenuItemView() { DataContext = item }; if (model.IsDisplayed || item.IsAlwaysDisplayed) { menuItemView.Opacity = 1; } else { menuItemView.Opacity = 0; } _menuViewItems.Add(item, menuItemView); _contentCanvas.Children.Add(menuItemView); } updateRendering(); } }