private AutomationPeer GetPeerForChildrenIndex(int index) { Group owner = this.Owner; GroupGeneratorNode generatorNode = owner.GeneratorNode; if (generatorNode == null) { return(null); } DataGridContext dataGridContext = owner.DataGridContext; if (dataGridContext == null) { return(null); } DataGridContextAutomationPeer dataGridContextAutomationPeer = dataGridContext.Peer; HeadersFootersGeneratorNode headerNode = generatorNode.GetHeaderNode(); int headersCount = (headerNode == null) ? 0 : headerNode.ItemCount; if (index < headersCount) { object item = headerNode.GetAt(index); AutomationPeer automationPeer = m_headerFooterChildren[item] as AutomationPeer; Debug.Assert(automationPeer != null); return(automationPeer); } else { index -= headersCount; IList <object> items = owner.GetItems(); int itemsCount = (items == null) ? 0 : items.Count; if (index < itemsCount) { return(dataGridContextAutomationPeer.FindOrCreateItemAutomationPeer(items[index], -1)); } else { index -= itemsCount; HeadersFootersGeneratorNode footerNode = generatorNode.GetFooterNode(); int footersCount = (footerNode == null) ? 0 : footerNode.ItemCount; if (index < footersCount) { object item = footerNode.GetAt(index); AutomationPeer automationPeer = m_headerFooterChildren[item] as AutomationPeer; Debug.Assert(automationPeer != null); return(automationPeer); } } } return(null); }
static internal void AddFooterPeer( DataGridContext dataGridContext, HeadersFootersGeneratorNode node, List <AutomationPeer> list, Hashtable children, Hashtable oldChildren) { int headersCount = node.ItemCount; for (int i = 0; i < headersCount; i++) { // We use GetAt since it does not return the same thing as .Items. // We need to get a GroupHeaderFooterItem. object item = node.GetAt(i); if (item != null) { HeaderFooterItemAutomationPeer automationPeer = oldChildren[item] as HeaderFooterItemAutomationPeer; if (automationPeer == null) { automationPeer = new HeaderFooterItemAutomationPeer(dataGridContext, item); } Debug.Assert(automationPeer != null); // we set ExtraInfo even if the header was already created since the position can change. automationPeer.SetExtraInfo(HeaderFooterItemAutomationPeer.HeaderFooterType.Footer, i); // Force EventsSource to be updated automationPeer.GetWrapperPeer(); list.Add(automationPeer); children[item] = automationPeer; } } }
internal static void AddFooterPeer( DataGridContext dataGridContext, HeadersFootersGeneratorNode node, List<AutomationPeer> list, Hashtable children, Hashtable oldChildren ) { int headersCount = node.ItemCount; for( int i = 0; i < headersCount; i++ ) { // We use GetAt since it does not return the same thing as .Items. // We need to get a GroupHeaderFooterItem. object item = node.GetAt( i ); if( item != null ) { HeaderFooterItemAutomationPeer automationPeer = oldChildren[ item ] as HeaderFooterItemAutomationPeer; if( automationPeer == null ) { automationPeer = new HeaderFooterItemAutomationPeer( dataGridContext, item ); } Debug.Assert( automationPeer != null ); // we set ExtraInfo even if the header was already created since the position can change. automationPeer.SetExtraInfo( HeaderFooterItemAutomationPeer.HeaderFooterType.Footer, i ); // Force EventsSource to be updated automationPeer.GetWrapperPeer(); list.Add( automationPeer ); children[ item ] = automationPeer; } } }
private AutomationPeer GetPeerForChildrenIndex(int index) { int fixedHeadersCount = 0; Panel fixedHeadersPanel = null; int fixedFootersCount = 0; Panel fixedFootersPanel = null; if (m_parentDataGridContext == null) { fixedHeadersPanel = m_dataGridControl.FixedHeadersHostPanel; fixedHeadersCount = (fixedHeadersPanel != null) ? fixedHeadersPanel.Children.Count : 0; fixedFootersPanel = m_dataGridControl.FixedFootersHostPanel; fixedFootersCount = (fixedFootersPanel != null) ? fixedFootersPanel.Children.Count : 0; } if (index < fixedHeadersCount) { UIElement element = fixedHeadersPanel.Children[index]; AutomationPeer automationPeer = m_headerFooterChildren[element] as AutomationPeer; Debug.Assert(automationPeer != null); if (automationPeer == null) { return(null); } return(automationPeer); } else { index -= fixedHeadersCount; HeadersFootersGeneratorNode headerNode = m_dataGridContext.CustomItemContainerGenerator.Header; int headersCount = (headerNode == null) ? 0 : headerNode.ItemCount; if (index < headersCount) { object item = headerNode.GetAt(index); AutomationPeer automationPeer = m_headerFooterChildren[item] as AutomationPeer; Debug.Assert(automationPeer != null); return(automationPeer); } else { index -= headersCount; CollectionView items = m_dataGridContext.Items; int itemsCount = (items == null) ? 0 : items.Count; if (index < itemsCount) { return(this.FindOrCreateItemAutomationPeer(items.GetItemAt(index), index)); } else { index -= itemsCount; HeadersFootersGeneratorNode footerNode = m_dataGridContext.CustomItemContainerGenerator.Footer; int footersCount = (footerNode == null) ? 0 : footerNode.ItemCount; if (index < footersCount) { object item = footerNode.GetAt(index); AutomationPeer automationPeer = m_headerFooterChildren[item] as AutomationPeer; Debug.Assert(automationPeer != null); return(automationPeer); } else { index -= footersCount; if (index < fixedFootersCount) { UIElement element = fixedFootersPanel.Children[index]; AutomationPeer automationPeer = m_headerFooterChildren[element] as AutomationPeer; Debug.Assert(automationPeer != null); return(automationPeer); } } } } } return(null); }