public static object?TryFindViewService(this IViewServiceHost thisControl, Type viewServiceType)
        {
            // Search within ViewServices collection
            var    actParent = thisControl;
            object?result    = null;

            while ((actParent != null) &&
                   (result == null))
            {
                foreach (var actViewService in actParent.ViewServices)
                {
                    if (actViewService == null)
                    {
                        continue;
                    }

                    // ReSharper disable once UseMethodIsInstanceOfType
                    if (!viewServiceType.IsAssignableFrom(actViewService.GetType()))
                    {
                        continue;
                    }

                    result = actViewService;
                }

                actParent = actParent.ParentViewServiceHost;
            }
            if (result != null)
            {
                return(result);
            }

            // Search for default view services
            actParent = thisControl;
            while ((actParent != null) &&
                   (result == null))
            {
                result    = actParent.TryGetDefaultViewService(viewServiceType);
                actParent = actParent.ParentViewServiceHost;
            }

            return(result);
        }
 public static T FindViewService <T>(this IViewServiceHost thisControl)
     where T : class
 {
     return((T)TryFindViewService(thisControl, typeof(T)) !);
 }
 public ViewServiceContainer(IViewServiceHost owner)
 {
     this.Owner = owner;
     this.ViewServices.CollectionChanged += this.OnViewServices_CollectionChanged;
 }