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 ); }
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 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)); }
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)); }
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)); }