Example #1
0
        /// <summary>
        /// Data context changed event handler
        /// </summary>
        /// <param name="sender">Event sender.</param>
        /// <param name="e">Event args.</param>
        private void MainWindows_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            DynamicMenuItemViewModel menuItemViewModel = (DynamicMenuItemViewModel)e.NewValue;

            menuItemViewModel.RaiseNotifyMenuItemEvent      += this.NotifyMenuItemEventHandler;
            menuItemViewModel.RaiseNotifyMenuItemClearEvent += this.NotifyMenuItemClearEventHandler;

            this.RaiseLoadMenuItemRequestEvent   += menuItemViewModel.LoadDynamicMenuRequestEventHandler;
            this.RaiseUnloadMenuItemRequestEvent += menuItemViewModel.UnloadDynamicMenuItemRequestEventHandler;
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IEnumerable <DynamicMenuItemViewModel> GetDynamicMenuItems()
        {
            var results = new List <DynamicMenuItemViewModel>();

            foreach (var dynamicEntityMetadata in DynamicMVCContext.DynamicEntityMetadatas.Where(x => x.DynamicMenuInfo.HasMenuItem))
            {
                var menuItem   = new DynamicMenuItemViewModel(dynamicEntityMetadata, dynamicEntityMetadata.DynamicMenuInfo.MenuItemDisplayName);
                var parentMenu = results.SingleOrDefault(x => x.DisplayName == dynamicEntityMetadata.DynamicMenuInfo.MenuItemCategory);
                if (parentMenu == null)
                {
                    parentMenu = new DynamicMenuItemViewModel(dynamicEntityMetadata.DynamicMenuInfo.MenuItemCategory);
                    results.Add(parentMenu);
                }
                parentMenu.DynamicMenuItemViewModels.Add(menuItem);
            }
            return(results);
        }