public static void RegisterSubTab <TView, TModel, TTranslation>(this IRegionManager regionManager, string tabItemRegion, string contentRegion, Func <TTranslation, string> titleId, Func <ConversionProfile, IProfileSetting> setting, IWhitelistedServiceLocator whitelistedServiceLocator, Func <ConversionProfile, bool> hasNotSupportedFeatures, IEventAggregator eventAggregator, bool isFirst = false) where TView : class where TModel : class, IWhitelisted, ISubTabViewModel where TTranslation : ITranslatable, new() { if (isFirst) { regionManager.RegisterViewWithRegion(contentRegion, typeof(TView)); } regionManager.RegisterViewWithRegion(tabItemRegion, () => { var subItem = new SubTabItem(); var model = whitelistedServiceLocator.GetInstance <TModel>(); InitSubItemModel <TView, TModel, TTranslation>(contentRegion, titleId, setting, hasNotSupportedFeatures, model, subItem); subItem.DataContext = model; SetupSubItemIsActiveChanged <TView>(regionManager, contentRegion, eventAggregator, subItem); subItem.Initialized += (sender, args) => model.MountView(); TransposerHelper.Register(subItem, model); return(subItem); }); }
/// <summary> /// OpenedElementsの変更をTabs.Itemsに反映 /// </summary> private void ResetTabs() { if (ResetTabs_LOCK) { return; } Tabs_ItemsChanged_LOCK = true; Tabs.Items.Clear(); // OpenedElementsからItemsに追加 for (int count = 0; count < OpenedElements.Count; count++) { TimelineElement trgC = OpenedElements[count]; SubTabItem s = new SubTabItem(); s.Element = trgC; s.Header = trgC.Name; s.LockWidth = true; Tabs.Items.Add(s); } if (Tabs.Items.Count != 0) { ((SubTabItem)Tabs.Items[Tabs.Items.Count - 1]).IsSelected = true; } Tabs_ItemsChanged_LOCK = false; }
public static void RegisterSubTab <TView, TModel, TTranslation>(this IRegionManager regionManager, string tabItemRegion, string contentRegion, Func <TTranslation, string> titleId, Func <ConversionProfile, IProfileSetting> setting, IWhitelistedServiceLocator whitelistedServiceLocator, bool isFirst = false) where TView : class where TModel : class, IWhitelisted, ISubTabViewModel where TTranslation : ITranslatable, new() { if (isFirst) { regionManager.RegisterViewWithRegion(contentRegion, typeof(TView)); } regionManager.RegisterViewWithRegion(tabItemRegion, () => { var subItem = new SubTabItem(); var model = whitelistedServiceLocator.GetInstance <TModel>(); model.Init <TTranslation>(titleId, setting, new PrismNavigationValueObject(contentRegion, typeof(TView).Name, () => { var listBox = subItem.Parent as ListBox; if (listBox != null) { listBox.SelectedItem = subItem; } })); subItem.DataContext = model; subItem.IsActiveChanged += (sender, args) => { if (subItem.IsActive) { regionManager.RequestNavigate(contentRegion, typeof(TView).Name); } }; return(subItem); }); }
private static void SetupSubItemIsActiveChanged <TView>(IRegionManager regionManager, string contentRegion, IEventAggregator eventAggregator, SubTabItem subItem) where TView : class { subItem.IsActiveChanged += (sender, args) => { if (!subItem.IsActive) { return; } var helpTopic = HelpTopic.ProfileSettings; regionManager.RequestNavigate(contentRegion, typeof(TView).Name, result => { if (result.Context.NavigationService == null) { return; } var regionActiveViews = result.Context.NavigationService.Region.ActiveViews.ToList(); if (regionActiveViews.First() is DependencyObject view) { helpTopic = (HelpTopic)view.GetValue(HelpProvider.HelpTopicProperty); } }); eventAggregator.GetEvent <SetProfileTabHelpTopicEvent>().Publish(helpTopic); }; }
private static void InitSubItemModel <TView, TModel, TTranslation>(string contentRegion, Func <TTranslation, string> titleId, Func <ConversionProfile, IProfileSetting> setting, Func <ConversionProfile, bool> hasNotSupportedFeatures, TModel model, SubTabItem subItem) where TView : class where TModel : class, IWhitelisted, ISubTabViewModel where TTranslation : ITranslatable, new() { model.Init <TTranslation>(titleId, setting, new PrismNavigationValueObject(contentRegion, typeof(TView).Name, () => { var listBox = subItem.Parent as ListBox; if (listBox != null && listBox.Items.Count == 0) { listBox.SelectedItem = subItem; } }), hasNotSupportedFeatures); }