private void ViewModel_DataSourceLoaded(object obj)
        {
            DataContext = ViewModel;

            mMechanicalEquipment = ViewModel.Equipment;

            //Components
            mComponentsControl = new MechanicalEquipmentComponentsControl(ViewModel.Equipment);
            mComponentsControl.CollectionChanged += (count) =>
                {
                    mMechanicalEquipment.GeneralEquipmentRelatedItemsCount.PropertyOrComponents = count;
                    SetTabHeadersText();
                };
            ComponentsTab.Content = mComponentsControl;

            //Issues
            mMechanicalRelatedIssuesControl = new MechanicalRelatedIssuesControl(ViewModel.Equipment);
            mMechanicalRelatedIssuesControl.CollectionChanged += (count) =>
                {
                    mMechanicalEquipment.GeneralEquipmentRelatedItemsCount.Issues = count;
                    SetTabHeadersText();
                };
            RelatedIssuesTab.Content = mMechanicalRelatedIssuesControl;

            //Attachements
            mMechanicalAttachmentsControl = new MechanicalAttachmentsControl(ViewModel.Equipment);
            mMechanicalAttachmentsControl.CollectionChanged += (count) =>
                {
                    mMechanicalEquipment.GeneralEquipmentRelatedItemsCount.Attachments = count;
                    SetTabHeadersText();
                };
            AttachmentsTab.Content = mMechanicalAttachmentsControl;

            //Documents Tab
            mDocumentsControl = new MechanicalEquipmentDocumentsControl(ViewModel.Equipment);
            mDocumentsControl.CollectionChanged += (count) =>
                {
                    mMechanicalEquipment.GeneralEquipmentRelatedItemsCount.Documents = count;
                    SetTabHeadersText();
                };

            mDocumentsControl.ControlLoaded += mDocumentsControl_ControlLoaded;
            RoutedEventHandler docsloaded = null;

            docsloaded = (s1, e1) =>
                             {
                                 //This will hook up change events on all controls
                                 Utils.SetUpChangeEvents((UIElement)DocumentsTab.Content, EventAggregator, ViewModel.Equipment);
                                 DocumentsTab.Loaded -= docsloaded;

                                 //GET Tab Counts --------------------------------------------------
                                 CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
                                 cmsWebServiceClient.GetMechanicalRelatedItemsCountCompleted += (s2, e2) =>
                                 {
                                     mMechanicalEquipment.GeneralEquipmentRelatedItemsCount = e2.Result;
                                     SetTabHeadersText();
                                 };
                                 cmsWebServiceClient.GetMechanicalRelatedItemsCountAsync(mMechanicalEquipment.Id);

                             };

            DocumentsTab.Loaded += docsloaded;

            //This will hook up change events on all controls
            Utils.SetUpChangeEvents(EquipmentControl.Content, EventAggregator, ViewModel.Equipment);
            Utils.SetUpChangeEvents((UIElement)ComponentsTab.Content, EventAggregator, ViewModel.Equipment);
            Utils.SetUpChangeEvents((UIElement)RelatedIssuesTab.Content, EventAggregator, ViewModel.Equipment);
            Utils.SetUpChangeEvents((UIElement)AttachmentsTab.Content, EventAggregator, ViewModel.Equipment);

            RoutedEventHandler loaded = null;
            loaded = (s1, e1) =>
                         {
                             //This will hook up change events on all controls
                             Utils.SetUpChangeEvents((UIElement)AttachmentsTab.Content, EventAggregator, ViewModel.Equipment);
                             AttachmentsTab.Loaded -= loaded;
                         };

            AttachmentsTab.Loaded += loaded;
        }
        private void BuildMoveComponentRevisionHistory(MechanicalEquipmentComponentsControl componentsControl)
        {
            if (componentsControl == null || componentsControl.Model == null || componentsControl.Model.MovedComponent == null)
            {
                return;
            }

            MechanicalEquipmentRevisionHistory rv = new MechanicalEquipmentRevisionHistory();
            rv.Date = DateTime.Now;
            rv.UserId = CMS.User.Id;
            rv.MechanicalEquipmentId = mEquipmentId;
            rv.Description = string.Format("Moved Component {0} to Mechanical Equipment {1}.", componentsControl.Model.MovedComponent.Name, componentsControl.Model.MovedComponent.MechanicalEquipment.Name);
            mMechanicalEquipment.MechanicalEquipmentRevisionHistories.Add(rv);
        }