public static MenuItem ToMenuItem(this IMenuRegister menuRegister, IShell shell) { var menuItem = new MenuItem { Header = menuRegister.Name, FontWeight = menuRegister.FontWeight, Tag = new MenuTag(menuRegister.Name, menuRegister.Group), Command = menuRegister.Command, CommandParameter = menuRegister.CommandParameter, IsCheckable = menuRegister.Checkable, Icon = menuRegister.Icon, FlowDirection = menuRegister.FlowDirection }; if (menuRegister.Gesture != null) { menuItem.InputGestureText = menuRegister.Gesture.GetDisplayStringForCulture(CultureInfo.CurrentCulture); shell.AddKeyBinding(menuItem.Command, menuRegister.Gesture); } INotifyPropertyChanged viewModel = null; if (menuRegister.ViewModelFactory != null) { viewModel = menuRegister.ViewModelFactory(); } if (menuRegister.ViewFactory != null) { var view = menuRegister.ViewFactory(viewModel); view.DataContext = viewModel; menuItem.Header = view; } if (menuRegister.Style != null) menuItem.SetResourceReference(FrameworkElement.StyleProperty, menuRegister.Style); return menuItem; }