/// <summary>
        /// Resets the view.
        /// </summary>
        /// <param name="hierarchicalDefinitions">The hierarchical definitions.</param>
        protected virtual void Bind(IEnumerable <IHierarchicalDefinitions> hierarchicalDefinitions)
        {
            var index = PreviousConflictIndex;

            PreviousConflictIndex = null;
            if (hierarchicalDefinitions != null)
            {
                HierarchicalDefinitions = hierarchicalDefinitions.ToObservableCollection();
                if (HierarchicalDefinitions.Any() && SelectedHierarchicalDefinition == null)
                {
                    SelectedParentHierarchicalDefinition = HierarchicalDefinitions.FirstOrDefault();
                }
                if (SelectedParentHierarchicalDefinition != null)
                {
                    var conflictName = SelectedParentHierarchicalDefinition.Name;
                    SelectedParentHierarchicalDefinition = null;
                    var newSelected = HierarchicalDefinitions.FirstOrDefault(p => p.Name.Equals(conflictName));
                    if (newSelected != null)
                    {
                        PreviousConflictIndex = index;
                        if (PreviousConflictIndex.GetValueOrDefault() > (newSelected.Children.Count - 1))
                        {
                            PreviousConflictIndex = newSelected.Children.Count - 1;
                        }
                        SelectedParentHierarchicalDefinition = newSelected;
                    }
                    if (SelectedParentHierarchicalDefinition.Children.Count > 0)
                    {
                        SelectedHierarchicalDefinition = SelectedParentHierarchicalDefinition.Children.FirstOrDefault();
                    }
                }
            }
            else
            {
                HierarchicalDefinitions = null;
            }
        }
 /// <summary>
 /// Resets the view.
 /// </summary>
 /// <param name="hierarchicalDefinitions">The hierarchical definitions.</param>
 protected virtual void Bind(IEnumerable <IHierarchicalDefinitions> hierarchicalDefinitions)
 {
     if (hierarchicalDefinitions != null)
     {
         IHierarchicalDefinitions selectedParent = null;
         if (SelectedParentHierarchicalDefinition != null)
         {
             selectedParent = SelectedParentHierarchicalDefinition;
         }
         HierarchicalDefinitions = hierarchicalDefinitions.ToObservableCollection();
         if (HierarchicalDefinitions.Any() && SelectedHierarchicalDefinitions.Count == 0)
         {
             if (selectedParent != null)
             {
                 SelectedParentHierarchicalDefinition = HierarchicalDefinitions.FirstOrDefault(p => p.Name.Equals(selectedParent.Name));
             }
             else
             {
                 SelectedParentHierarchicalDefinition = HierarchicalDefinitions.FirstOrDefault();
             }
         }
         if (SelectedParentHierarchicalDefinition != null)
         {
             var conflictName = SelectedParentHierarchicalDefinition.Name;
             SelectedParentHierarchicalDefinition = null;
             var newSelected = HierarchicalDefinitions.FirstOrDefault(p => p.Name.Equals(conflictName));
             if (newSelected != null)
             {
                 SelectedParentHierarchicalDefinition = newSelected;
             }
         }
     }
     else
     {
         HierarchicalDefinitions = null;
     }
 }