Example #1
0
        public static Panel GetItemsHost(this ItemsControl control)
        {
            if (control == null)
            {
                throw new ArgumentNullException("control");
            }
            DependencyObject reference = control.ItemContainerGenerator.ContainerFromIndex(0);

            if (reference != null)
            {
                return(VisualTreeHelper.GetParent(reference) as Panel);
            }
            FrameworkElement parent = Enumerable.FirstOrDefault <DependencyObject>(VisualTreeExtensions.GetVisualChildren((DependencyObject)control)) as FrameworkElement;

            if (parent != null)
            {
                ItemsPresenter itemsPresenter = Enumerable.FirstOrDefault <ItemsPresenter>(Enumerable.OfType <ItemsPresenter>((IEnumerable)VisualTreeExtensions.GetLogicalDescendents(parent)));
                if (itemsPresenter != null && VisualTreeHelper.GetChildrenCount((DependencyObject)itemsPresenter) > 0)
                {
                    return(VisualTreeHelper.GetChild((DependencyObject)itemsPresenter, 0) as Panel);
                }
            }
            return((Panel)null);
        }