Beispiel #1
0
        internal UIElement GetWrapper()
        {
            HeaderFooterItem headerFooterItem = m_owner as HeaderFooterItem;

            if (headerFooterItem == null)
            {
                headerFooterItem =
                    m_dataGridContext.GetContainerFromItem(m_owner) as HeaderFooterItem;
            }

            if (headerFooterItem == null)
            {
                return(null);
            }

            IDataGridItemContainer dataGridItemContainer = HeaderFooterItem.FindIDataGridItemContainerInChildren(
                headerFooterItem, headerFooterItem.AsVisual());

            if (dataGridItemContainer != null)
            {
                return(dataGridItemContainer as UIElement);
            }

            return(headerFooterItem);
        }
    private static Func<DependencyObject, bool> GetTemplatedDescendantExpandPredicate( IDataGridItemContainer source )
    {
      var fe = source as FrameworkElement;
      if( fe == null )
        throw new ArgumentException( "The source object must be a FrameworkElement.", "source" );

      return ( DependencyObject item ) => IDataGridItemContainerExtensions.IsPartOfTargetTemplate( item, fe );
    }
        internal static IDataGridItemContainer FindIDataGridItemContainerInChildren(HeaderFooterItem headerFooterItem, DependencyObject currentChild, bool checkRoot)
        {
            if (currentChild == null)
            {
                return(null);
            }

            IDataGridItemContainer container = currentChild as IDataGridItemContainer;

            if (checkRoot)
            {
                if (container != null)
                {
                    return(container);
                }
            }

            int childCount = VisualTreeHelper.GetChildrenCount(currentChild);

            for (int i = 0; i < childCount; i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(currentChild, i);

                if (child == null)
                {
                    continue;
                }

                if (!HeaderFooterItem.IsPartOfHeaderFooterItemTemplate(child, headerFooterItem))
                {
                    // We don't want to parse further the DataTemplate
                    return(null);
                }

                container = child as IDataGridItemContainer;

                if (container != null)
                {
                    return(container);
                }

                int innerChildCount = VisualTreeHelper.GetChildrenCount(child);

                if (innerChildCount > 0)
                {
                    container = HeaderFooterItem.FindIDataGridItemContainerInChildren(headerFooterItem, child, false);
                }

                if (container != null)
                {
                    return(container);
                }
            }

            return(null);
        }
    internal DataGridItemContainerManager( IDataGridItemContainer owner )
    {
      if( owner == null )
        throw new ArgumentNullException( "owner" );

      if( !( owner is FrameworkElement ) )
        throw new ArgumentException( "The owner must derive from FrameworkElement.", "owner" );

      m_owner = owner;
    }
    private static IEnumerable<IDataGridItemContainer> GetChildDataGridItemContainers( IDataGridItemContainer source, Func<DependencyObject, bool> expand )
    {
      Debug.Assert( source != null );

      var root = source as DependencyObject;
      if( root == null )
        throw new ArgumentException( "The source object must be a DependencyObject.", "source" );

      return IDataGridItemContainerExtensions.GetChildDataGridItemContainers( root, expand );
    }
Beispiel #6
0
        internal DataGridItemContainerManager(IDataGridItemContainer owner)
        {
            if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }

            if (!(owner is FrameworkElement))
            {
                throw new ArgumentException("The owner must derive from FrameworkElement.", "owner");
            }

            m_owner = owner;
        }
Beispiel #7
0
        private static Func <DependencyObject, bool> GetTemplatedChildExpandPredicate(IDataGridItemContainer source)
        {
            var fe = source as FrameworkElement;

            if (fe == null)
            {
                throw new ArgumentException("The source object must be a FrameworkElement.", "source");
            }

            return(( DependencyObject item ) => IDataGridItemContainerExtensions.ExpandChild(item) &&
                   IDataGridItemContainerExtensions.IsPartOfTargetTemplate(item, fe));
        }
Beispiel #8
0
        private static IEnumerable <IDataGridItemContainer> GetChildDataGridItemContainers(IDataGridItemContainer source, Func <DependencyObject, bool> expand)
        {
            Debug.Assert(source != null);

            var root = source as DependencyObject;

            if (root == null)
            {
                throw new ArgumentException("The source object must be a DependencyObject.", "source");
            }

            return(IDataGridItemContainerExtensions.GetChildDataGridItemContainers(root, expand));
        }
Beispiel #9
0
        internal static IEnumerable <IDataGridItemContainer> GetTemplatedChildDataGridItemContainers(this IDataGridItemContainer source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            var predicate = IDataGridItemContainerExtensions.GetTemplatedChildExpandPredicate(source);

            return(IDataGridItemContainerExtensions.GetChildDataGridItemContainers(source, predicate));
        }