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

            //Components
            mComponentsControl = new ElectricalEquipmentComponentsControl(ViewModel.Equipment);
            mComponentsControl.CollectionChanged += (count) =>
                {
                    mElectricalEquipment.GeneralEquipmentRelatedItemsCount.PropertyOrComponents = count;
                    SetTabHeadersText();
                };

            ComponentsTab.Content = mComponentsControl;
            mComponentsLoaded = true;

            //Issues
            mElectricalRelatedIssuesControl = new ElectricalRelatedIssuesControl(ViewModel.Equipment);
            mElectricalRelatedIssuesControl.CollectionChanged += (count) =>
                {
                    mElectricalEquipment.GeneralEquipmentRelatedItemsCount.Issues = count;
                    SetTabHeadersText();
                };
            RelatedIssuesTab.Content = mElectricalRelatedIssuesControl;
            mIssuesLoaded = true;

            //Attachments
            mElectricalAttachmentsControl = new ElectricalAttachmentsControl(ViewModel.Equipment);
            mElectricalAttachmentsControl.ModelLoaded += () =>
                {
                    mAttachmentsLoaded = true;
                    CheckAllLoaded();
                };
            mElectricalAttachmentsControl.CollectionChanged += (count) =>
                {
                    mElectricalEquipment.GeneralEquipmentRelatedItemsCount.Attachments = count;
                    SetTabHeadersText();
                };
            AttachmentsTab.Content = mElectricalAttachmentsControl;

            //Documents Tab
            mDocumentsControl = new ElectricalEquipmentDocumentsControl(ViewModel.Equipment);

            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;
                };

            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;

            CheckAllLoaded();
        }
        private void BuildMoveComponentRevisionHistory(ElectricalEquipmentComponentsControl componentsControl)
        {
            if (componentsControl == null || componentsControl.Model == null || componentsControl.Model.MovedComponent == null)
            {
                return;
            }

            ElectricalEquipmentRevisionHistory rv = new ElectricalEquipmentRevisionHistory();
            rv.Date = DateTime.Now;
            rv.UserId = CMS.User.Id;
            rv.ElectricalEquipmentId = mEquipmentId;
            rv.Description = string.Format("Moved Component {0} to Electrical Equipment {1}.", componentsControl.Model.MovedComponent.Name, componentsControl.Model.MovedComponent.ElectricalEquipment.Name);
            rv.IsSystemMessage = true;
            mElectricalEquipment.ElectricalEquipmentRevisionHistories.Add(rv);
        }