public void AssociateWithTemplate(TreeListViewRow destination)
        {
            try
            {
                foreach (var templateItem in TemplateViewModelLocator.GetTemplateVM().SelectedItems)
                {
                    switch (Globals.DraggedItem.Type)
                    {
                    case "Property":
                        foreach (var propertyItem in PropertyViewModelLocator.GetPropertyVM().SelectedItems)
                        {
                            TemplateAssociationModel templateAssociationItem = new TemplateAssociationModel
                            {
                                ID                = Guid.NewGuid(),
                                IsNew             = true,
                                IsChanged         = false,
                                IsDeleted         = false,
                                Project_ID        = Globals.Project_ID,
                                Template_ID       = templateItem.ID,
                                AssociationType   = Globals.DraggedItem.Type,
                                ChildAssociations = new TD.ObservableItemCollection <TemplateAssociationModel>(),
                            };
                            templateAssociationItem.Association_ID     = propertyItem.ID;
                            templateAssociationItem.Name               = propertyItem.PropertyName;
                            templateAssociationItem.Description        = propertyItem.Description;
                            templateAssociationItem.AssociationType_ID = propertyItem.PropertyType_ID;
                            templateAssociationItem.Value              = propertyItem.Value;

                            foreach (var childItem in propertyItem.ChildProperties)
                            {
                                TemplateAssociationModel templateAssociationChildItem = new TemplateAssociationModel
                                {
                                    IsNew           = true,
                                    IsChanged       = false,
                                    IsDeleted       = false,
                                    AssociationType = "Property",
                                    ID                 = Guid.NewGuid(),
                                    Project_ID         = Globals.Project_ID,
                                    Template_ID        = templateItem.ID,
                                    Association_ID     = childItem.ID,
                                    Name               = childItem.PropertyName,
                                    Description        = childItem.Description,
                                    AssociationType_ID = childItem.PropertyType_ID,
                                    Value              = childItem.Value,
                                    ChildAssociations  = new TD.ObservableItemCollection <TemplateAssociationModel>()
                                };
                                templateAssociationItem.ChildAssociations.Add(templateAssociationChildItem);
                            }
                            TemplateAssociations.Add(templateAssociationItem);
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                RadWindow.Alert(ex.Message);
            }
            //}
        }
        private void Load(Guid?associationParent_ID)
        {
            // Check if the classes and properties have ben loaded. Necessary because of the various background workers

            try
            {
                using (EDBEntities eDB = new EDBEntities())
                {
                    foreach (tblTemplateAssociation Rec in (from o in eDB.tblTemplateAssociations where (o.Project_ID == Globals.Project_ID) select o))
                    {
                        TemplateAssociationModel templateAssociationItem = new TemplateAssociationModel
                        {
                            ID                = Rec.ID,
                            Project_ID        = Rec.Project_ID,
                            Template_ID       = Rec.Template_ID,
                            Association_ID    = Rec.Association_ID,
                            Value             = Rec.Value,
                            AssociationType   = Rec.AssociationType,
                            IsChanged         = false,
                            IsNew             = false,
                            IsDeleted         = false,
                            ChildAssociations = new TD.ObservableItemCollection <TemplateAssociationModel>()
                        };
                        switch (templateAssociationItem.AssociationType)
                        {
                        case "Property":
                            var propertyItem = PropertyViewModelLocator.GetPropertyVM().GetProperty(templateAssociationItem.Association_ID, null);
                            if (propertyItem != null)
                            {
                                templateAssociationItem.Name               = propertyItem.PropertyName;
                                templateAssociationItem.Description        = propertyItem.Description;
                                templateAssociationItem.AssociationType_ID = propertyItem.PropertyType_ID;
                                foreach (var childItem in propertyItem.ChildProperties)
                                {
                                    TemplateAssociationModel item = new TemplateAssociationModel
                                    {
                                        ID                 = Rec.ID,
                                        Project_ID         = childItem.Project_ID,
                                        Template_ID        = templateAssociationItem.Template_ID,
                                        Association_ID     = childItem.ID,
                                        Name               = childItem.PropertyName,
                                        Description        = childItem.Description,
                                        AssociationType    = "Property",
                                        AssociationType_ID = childItem.PropertyType_ID,
                                        ChildAssociations  = new TD.ObservableItemCollection <TemplateAssociationModel>()
                                    };
                                    templateAssociationItem.ChildAssociations.Add(item);
                                }
                            }
                            else
                            {
                                throw new System.InvalidOperationException(String.Format("Association without source\nProperty ID: {0}\nFix in database", templateAssociationItem.Association_ID));
                            }
                            break;

                        case "TemplateProperty":
                            break;
                        }

                        TemplateAssociations.Add(templateAssociationItem);
                    }
                }
            }
            catch (Exception ex)
            {
                Application.Current.Dispatcher.Invoke((Action) delegate { RadWindow.Alert(ex.Message); });
            }
        }