void LoadChild()
 {
     if (LoadingChild != null)
     {
         LoadingChild.Loaded += OnLoadingChildLoaded;
         Child = LoadingChild;
     }
     else if (LoadingChildTemplate != null)
     {
         var feChild = LoadingChildTemplate.LoadContent() as FrameworkElement;
         if (feChild != null)
         {
             feChild.Loaded += OnLoadingChildLoaded;
             Child           = feChild;
         }
         else
         {
             throw new InvalidOperationException(LOADING_CHILD_WRONG_TEMPLATE_EXCEPTION);
         }
     }
 }
 void LoadChildInDesignTime()
 {
     if (LoadingChild != null && LoadingChildTemplate != null)
     {
         Child = CreateFallbackView(LOADING_CHILD_SET_TWICE_EXCEPTION);
     }
     else if (LoadingChild != null)
     {
         Child = LoadingChild;
     }
     else if (LoadingChildTemplate != null)
     {
         var feChild = LoadingChildTemplate.LoadContent() as FrameworkElement;
         if (feChild != null)
         {
             Child = feChild;
         }
         else
         {
             Child = CreateFallbackView(LOADING_CHILD_WRONG_TEMPLATE_EXCEPTION);
         }
     }
 }
 void OnLoadingChildTemplateChanged()
 {
     ValidateLoadingChild();
     LoadingChildTemplate.Do(x => x.Seal());
     OnLoadingChildChanged();
 }