/// <summary>
 /// The main window details_ loaded.
 /// </summary>
 /// <param name="sender">
 /// The sender.
 /// </param>
 /// <param name="e">
 /// The e.
 /// </param>
 public void MainWindowDetails_Loaded(object sender, RoutedEventArgs e)
 {
     this._viewModel = this.DataContext as MainWindowDetailsViewModel;
     if (this._viewModel != null)
     {
         this._viewModel.OnNewModule -= this.MainWindow_OnNewModule;
         this._viewModel.OnNewModule += this.MainWindow_OnNewModule;
         this._viewModel.LoadModule();              
     }
 }
        /// <summary>
        /// The dispose.
        /// </summary>
        public override void Dispose()
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new System.Action(() =>
            {
                if (this._usersMainWindowDetailsVm != null)
                {
                    this._usersMainWindowDetailsVm.Dispose();
                    this._usersMainWindowDetailsVm = null;
                }
                if (this._groupsMainWindowDetailsVm != null)
                {
                    this._groupsMainWindowDetailsVm.Dispose();
                    this._groupsMainWindowDetailsVm = null;
                }
                if (this._membershipMainWindowDetailsVm != null)
                {
                    this._membershipMainWindowDetailsVm.Dispose();
                    this._membershipMainWindowDetailsVm = null;
                }

                base.Dispose();
            }));
        }
        /// <summary>
        /// The main window_ on new module.
        /// </summary>
        /// <param name="module">
        /// The module.
        /// </param>
        private void MainWindow_OnNewModule(object module)
        {
            EnumScreen currentModule = (EnumScreen)module;

            // Check for content don't load again.
            if (FrameContent.Source != null)
            {
                return;
            }
            this._viewModel = this.DataContext as MainWindowDetailsViewModel;

            if (this._viewModel != null)
            {
                // navigate to the module specified.
                switch (currentModule)
                {
                    case EnumScreen.Home:
                        UrlContent = "/Insyston.Operations.WPF.Views.Shell;component/HomePageView.xaml";
                        break;
                    case EnumScreen.Users:
                        Permission permissionUser = Operations.Security.Authorisation.GetPermission(Components.Security, Forms.Users);

                        if (permissionUser.CanSee)
                        {
                            UrlContent = "/Insyston.Operations.WPF.Views.Security;component/UsersView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                    case EnumScreen.Groups:
                        Permission permissionGroup = Operations.Security.Authorisation.GetPermission(Components.Security, Forms.Groups);

                        if (permissionGroup.CanSee)
                        {
                            UrlContent = "/Insyston.Operations.WPF.Views.Security;component/GroupsView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                    case EnumScreen.Configuration:
                        UrlContent = "/Insyston.Operations.WPF.Views.Shell;component/ConfigurationView.xaml";
                        break;
                    case EnumScreen.CollectionSettings:
                        UrlContent = "/Insyston.Operations.WPF.Views.Collections;component/CollectionsSettingView.xaml";
                        break;
                    case EnumScreen.CollectionAssignment:
                        Permission permissionAssignment = Operations.Security.Authorisation.GetPermission(Components.Collections, Forms.CollectionsQueueAssignment);
                        if (permissionAssignment.CanSee)
                        {
                            UrlContent = "/Insyston.Operations.WPF.Views.Collections;component/CollectionsAssignmentView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                    case EnumScreen.SecuritySetting:
                        UrlContent = "/Insyston.Operations.WPF.Views.Security;component/SystemSettingView.xaml";
                        break;
                    case EnumScreen.ColletionQueues:
                        UrlContent = "/Insyston.Operations.WPF.Views.Collections;component/CollectionsManagementView.xaml";
                        break;
                    case EnumScreen.Membership:
                        Permission permissionMembership = Operations.Security.Authorisation.GetPermission(Components.Security, Forms.Membership);

                        if (permissionMembership.CanSee)
                        {
                            UrlContent = "/Insyston.Operations.WPF.Views.Security;component/MembershipView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                    case EnumScreen.FundingSummary:
                        Permission permissionFunding = Operations.Security.Authorisation.GetPermission(Components.Funding, Forms.Funding);
                        if (permissionFunding.CanSee)
                        {
                            UrlContent = "/Insyston.Operations.WPF.Views.Funding;component/FundingSummaryView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                    case EnumScreen.Collectors:
                        UrlContent = "/Insyston.Operations.WPF.Views.Collections;component/CollectorsView.xaml";
                        break;
                    case EnumScreen.AssetClassesCategory:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetClasses/AssetClassesCategoryView.xaml";
                        break;
                    case EnumScreen.AssetClassesType:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetClasses/AssetClassesTypeView.xaml";
                        break;
                    case EnumScreen.AssetClassesMake:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetClasses/AssetClassesMakeView.xaml";
                        break;
                    case EnumScreen.AssetClassesModel:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetClasses/AssetClassesModelView.xaml";
                        break;
                    case EnumScreen.AssetCollateralClasses:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetCollateralClassesView.xaml";
                        break;
                    case EnumScreen.AssetFeatures:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetFeaturesView.xaml";
                        break;
                    case EnumScreen.AssetSettings:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetSettingsView.xaml";
                        break;
                    case EnumScreen.AssetRegisters:
                        UrlContent = "/Insyston.Operations.WPF.Views.Assets;component/AssetRegistersView.xaml";
                        break;
                    case EnumScreen.RegisteredAsset:
                        Permission permissionRegisteredAsset =
                            Operations.Security.Authorisation.GetPermission(
                                Components.SystemManagementRegisterdAsset,
                                Forms.RegisteredAssetDetail);
                        if (permissionRegisteredAsset.CanSee)
                        {
                            UrlContent =
                                "/Insyston.Operations.WPF.Views.RegisteredAsset;component/RegisteredAssetView.xaml";
                        }
                        else
                        {
                            UrlContent = "None";
                            this._viewModel.PermissionText = "Security Permissions are required to access this area";
                        }
                        break;
                }
                FrameContent.Source = new Uri(UrlContent, UriKind.Relative);
            }
        }
        private void FrameContent_OnNavigated(object sender, NavigationEventArgs e)
        {
            FrameContent.Visibility = System.Windows.Visibility.Visible;

            this._viewModel = this.DataContext as MainWindowDetailsViewModel;
            var windowDetailsViewModel = this._viewModel;
            if (windowDetailsViewModel != null)
            {
                UserControl content = this.FrameContent.Content as UserControl;
                if (content != null)
                {
                    var mainWindowDetailsViewModel = windowDetailsViewModel;
                    {
                        mainWindowDetailsViewModel.ScreenDetailViewModel = content.DataContext as ViewModelUseCaseBase;
                        Permission permissionUser;
                        var s = content.ToString();
                        if (s != null && s.IndexOf("UsersView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.Security, Forms.Users);
                            if (!permissionUser.CanSee)
                            {
                                this.FrameContent.Visibility = System.Windows.Visibility.Collapsed;
                                this.PermissionContent.Visibility = Visibility.Visible;
                            }
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }
                        if (s != null && s.IndexOf("GroupsView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.Security,
                                Forms.Groups);
                            if (!permissionUser.CanSee)
                            {
                                this.FrameContent.Visibility = System.Windows.Visibility.Collapsed;
                                this.PermissionContent.Visibility = Visibility.Visible;
                            }
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }
                        if (s != null && s.IndexOf("ConfigurationView", System.StringComparison.Ordinal) != -1)
                        {
                            Permission permissionSecuritySetting = Operations.Security.Authorisation.GetPermission(Components.SystemManagementSecuritySettings, Forms.SecuritySettings);
                            Permission permissionQueuesSetting = Operations.Security.Authorisation.GetPermission(Components.SystemManagementCollectionSettings, Forms.CollectionSettings);
                            Permission permissionQueuesManagerment = Operations.Security.Authorisation.GetPermission(Components.SystemManagementCollectionQueues, Forms.QueueDetail);
                            Permission permissionAssetSetting = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetSettings, Forms.AssetSetting);
                        
                            // Check Permission for Asset Classes module
                            int resultAssetClassPermission = 0;

                            // Check permission for Asset Classes Category
                            Permission assetClassesCategoryDetail = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesCategory, Forms.AssetClassesCategoryDetail);
                            Permission assetClassesCategoryFeature = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesCategory, Forms.AssetClassesCategoryFeatures);
                            Permission assetClassesCategoryType = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesCategory, Forms.AssetClassesCategoryTypes);
                            if (!assetClassesCategoryDetail.CanSee && !assetClassesCategoryFeature.CanSee && !assetClassesCategoryType.CanSee)
                            {
                                resultAssetClassPermission += 1;
                            }

                            // Check permission for Asset Classes Type
                            Permission assetClassesTypeDetail = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesType, Forms.AssetClassesTypeDetail);
                            Permission assetClassesTypeFeature = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesType, Forms.AssetClassesTypeFeatures);
                            Permission assetClassesTypeMake = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesType, Forms.AssetClassesTypeMake);
                            if (!assetClassesTypeDetail.CanSee && !assetClassesTypeFeature.CanSee && !assetClassesTypeMake.CanSee)
                            {
                                resultAssetClassPermission += 1;
                            }

                            // Check permission for Asset Classes Make
                            Permission assetClassesMake = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesMake, Forms.AssetClassesMakeDetail);
                            if (!assetClassesMake.CanSee)
                            {
                                resultAssetClassPermission += 1;
                            }

                            // Check permission for Asset Classes Model
                            Permission assetClassesModel = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesModel, Forms.AssetClassesModelDetail);
                            if (!assetClassesModel.CanSee)
                            {
                                resultAssetClassPermission += 1;
                            }

                            // Check permission for Asset Collateral
                            bool resultAssetCollateralPermission = false;
                            Permission permissionCollateralDetail = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetCollateralClasses, Forms.CollateralClassesDetail);
                            Permission permissionCollateralType = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetCollateralClasses, Forms.CollateralClassesType);
                            if (permissionCollateralDetail.CanSee || permissionCollateralType.CanSee)
                            {
                                resultAssetCollateralPermission = true;
                            }

                            // Check permission for Asset Feature 
                            bool resultAssetFeaturePermission = false;
                            Permission permissionAssetFeatureDetail = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetFeatures, Forms.FeaturesDetail);
                            Permission permissionAssetFeatureAssignTo = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetFeatures, Forms.FeaturesAssignTo);
                            if (permissionAssetFeatureDetail.CanSee || permissionAssetFeatureAssignTo.CanSee)
                            {
                                resultAssetFeaturePermission = true;
                            }

                            // Check permission for Asset Register
                            Permission permissionRegister = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetRegister, Forms.RegisterDetail);

                            var configurationViewModel =
                                mainWindowDetailsViewModel.ScreenDetailViewModel as ConfigurationViewModel;
                            if (configurationViewModel != null)
                            {
                                configurationViewModel.GetHyperlinkWithPermission(permissionQueuesSetting, permissionQueuesManagerment, permissionSecuritySetting, resultAssetClassPermission == 4 ? false : true, resultAssetCollateralPermission, resultAssetFeaturePermission, permissionRegister, permissionAssetSetting);
                            }
                        }
                        if (s != null && s.IndexOf("CollectionsSettingView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.SystemManagementCollectionSettings, Forms.CollectionSettings);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }
                        if (s != null && s.IndexOf("SystemSettingView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.SystemManagementSecuritySettings, Forms.SecuritySettings);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }
                        if (s != null && s.IndexOf("CollectionsManagementView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.SystemManagementCollectionQueues, Forms.QueueDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }
                        if (s != null && s.IndexOf("CollectionsAssignmentView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.Collections,
                                Forms.CollectionsQueueAssignment);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("FundingSummaryView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.Funding,
                                Forms.Funding);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("MembershipView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(
                                Components.Security,
                                Forms.Membership);
                            if (!permissionUser.CanSee)
                            {
                                this.FrameContent.Visibility = System.Windows.Visibility.Collapsed;
                                this.PermissionContent.Visibility = Visibility.Visible;
                            }
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("CollectorsView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementCollectionQueues, Forms.Collectors);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("AssetClassesCategoryView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesCategory, Forms.AssetClassesCategoryDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("AssetClassesTypeView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesType, Forms.AssetClassesTypeDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("AssetClassesMakeView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesMake, Forms.AssetClassesMakeDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                if (permissionUser != null)
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                                }
                                else
                                {
                                    mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                                }
                            }
                        }

                        if (s != null && s.IndexOf("AssetClassesModelView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetClassesModel, Forms.AssetClassesModelDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                            }
                            else
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                            }
                        }

                        if (s != null && s.IndexOf("AssetFeaturesView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetFeatures, Forms.FeaturesDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                            }
                            else
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                            }
                        }

                        if (s != null && s.IndexOf("AssetCollateralClassesView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetCollateralClasses, Forms.CollateralClassesDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                            }
                            else
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                            }
                        }

                        if (s != null && s.IndexOf("AssetSettingsView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetSettings, Forms.AssetSetting);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                            }
                        }

                        if (s != null && s.IndexOf("AssetRegistersView", System.StringComparison.Ordinal) != -1)
                        {
                            permissionUser = Operations.Security.Authorisation.GetPermission(Components.SystemManagementAssetRegister, Forms.RegisterDetail);
                            if (mainWindowDetailsViewModel.ScreenDetailViewModel != null)
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = permissionUser.CanEdit;
                            }
                            else
                            {
                                mainWindowDetailsViewModel.ScreenDetailViewModel.CanEdit = false;
                            }
                        }

                        this.ActionMenuItemsControl.DataContext = content.DataContext;
                    }
                    windowDetailsViewModel.HyperLinkItemClick();
                    windowDetailsViewModel.OnRaiseStepChanged();
                    windowDetailsViewModel.OnErrorHyperlinkSelect();
                    windowDetailsViewModel.OnValidateNotError();
                    windowDetailsViewModel.ConfigItemClick();
                    windowDetailsViewModel.OnCancelNewItem();

                    if (windowDetailsViewModel.NavigatedToScreen != null)
                    {
                        windowDetailsViewModel.NavigatedToScreen(windowDetailsViewModel);
                    }
                }                
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MainAssetClassesViewModel"/> class.
        /// </summary>
        public MainAssetClassesViewModel()
        {
            this._AssetClassesModelViewModel = new MainWindowDetailsViewModel(EnumScreen.AssetClassesModel);
            this._AssetCategoryViewModel = new MainWindowDetailsViewModel(EnumScreen.AssetClassesCategory);
            this._assetClassesMakeViewModel = new MainWindowDetailsViewModel(EnumScreen.AssetClassesMake);
            this._assetClassesTypeViewModel = new MainWindowDetailsViewModel(EnumScreen.AssetClassesType);

            this._categoryChangedVisibility = Visibility.Collapsed;
            this._typeChangedVisibility = Visibility.Collapsed;
            this._makeChangedVisibility = Visibility.Collapsed;
            this._modelChangedVisibility = Visibility.Collapsed;
        }
        /// <summary>
        /// The dispose.
        /// </summary>
        public override void Dispose()
        {
            Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
            {
                if (this._listMainWindowDetailsVm != null)
                {
                    this._listMainWindowDetailsVm.Dispose();
                    this._listMainWindowDetailsVm = null;
                }
                if (this.CollectorsMainWindowDetailsVm != null)
                {
                    this.CollectorsMainWindowDetailsVm.Dispose();
                    this.CollectorsMainWindowDetailsVm = null;
                }

                base.Dispose();
            }));
        }