// This method is called from DataGrid.OnBeginningEdit/OnCommittingEdit/OnCancelingEdit // Raises Invoked event when cell begin/cancel/commit edit internal void RaiseAutomationCellInvokeEvents(DataGridColumn column, DataGridRow row) { DataGridItemAutomationPeer dataGridItemAutomationPeer = GetOrCreateItemPeer(row.Item); if (dataGridItemAutomationPeer != null) { DataGridCellItemAutomationPeer cellPeer = dataGridItemAutomationPeer.GetOrCreateCellItemPeer(column); if (cellPeer != null) { cellPeer.RaiseAutomationEvent(AutomationEvents.InvokePatternOnInvoked); } } }
// Private helper returning the automation peer coresponding to cellInfo // Cell can be virtualized private DataGridCellItemAutomationPeer GetCellItemPeer(DataGridCellInfo cellInfo) { if (cellInfo.IsValid) { DataGridItemAutomationPeer dataGridItemAutomationPeer = GetOrCreateItemPeer(cellInfo.Item); if (dataGridItemAutomationPeer != null) { return(dataGridItemAutomationPeer.GetOrCreateCellItemPeer(cellInfo.Column)); } } return(null); }
private void UpdateEventSource() { DataGridCell cell = (DataGridCell)Owner; DataGrid dataGrid = cell.DataGridOwner; if (dataGrid != null) { DataGridAutomationPeer dataGridAutomationPeer = CreatePeerForElement(dataGrid) as DataGridAutomationPeer; if (dataGridAutomationPeer != null) { DataGridItemAutomationPeer itemAutomationPeer = dataGridAutomationPeer.GetOrCreateItemPeer(cell.DataContext); if (itemAutomationPeer != null) { DataGridCellItemAutomationPeer cellItemAutomationPeer = itemAutomationPeer.GetOrCreateCellItemPeer(cell.Column); this.EventsSource = cellItemAutomationPeer; } } } }
IRawElementProviderSimple IGridProvider.GetItem(int row, int column) { if (row >= 0 && row < this.OwningDataGrid.Items.Count && column >= 0 && column < this.OwningDataGrid.Columns.Count) { object item = this.OwningDataGrid.Items[row]; DataGridColumn dataGridColumn = this.OwningDataGrid.Columns[column]; this.OwningDataGrid.ScrollIntoView(item, dataGridColumn); this.OwningDataGrid.UpdateLayout(); DataGridItemAutomationPeer itemPeer = this.GetOrCreateItemPeer(item); if (itemPeer != null) { DataGridCellItemAutomationPeer cellItemPeer = itemPeer.GetOrCreateCellItemPeer(dataGridColumn); if (cellItemPeer != null) { return(ProviderFromPeer(cellItemPeer)); } } } return(null); }
private void AddSelectedCells(List <IRawElementProviderSimple> cellProviders) { if (cellProviders == null) { throw new ArgumentNullException("cellProviders"); } // Add selected cells to selection if (this.OwningDataGrid.SelectedCells != null) { foreach (DataGridCellInfo cellInfo in this.OwningDataGrid.SelectedCells) { DataGridItemAutomationPeer itemPeer = this.GetOrCreateItemPeer(cellInfo.Item); if (itemPeer != null) { IRawElementProviderSimple provider = ProviderFromPeer(itemPeer.GetOrCreateCellItemPeer(cellInfo.Column)); if (provider != null) { cellProviders.Add(provider); } } } } }