示例#1
0
        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;
        }
示例#3
0
        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);
            });
        }
示例#4
0
        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);
            };
        }
示例#5
0
 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);
 }