Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / TableAutomationPeer.cs / 1305600 / TableAutomationPeer.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // File: TableAutomationPeer.cs // // Description: Automation peer for Table // //--------------------------------------------------------------------------- using System.Windows.Automation.Provider; // IRawElementProviderSimple using System.Windows.Documents; namespace System.Windows.Automation.Peers { /// public class TableAutomationPeer : TextElementAutomationPeer, IGridProvider { ////// Constructor. /// /// Owner of the AutomationPeer. public TableAutomationPeer(Table owner) : base(owner) { _rowCount = GetRowCount(); _columnCount = GetColumnCount(); } ////// public override object GetPattern(PatternInterface patternInterface) { if (patternInterface == PatternInterface.Grid) { return this; } else { return base.GetPattern(patternInterface); } } ////// /// protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Table; } ////// /// protected override string GetClassNameCore() { return "Table"; } ////// /// protected override bool IsControlElementCore() { return true; } ////// /// protected override bool IsContentElementCore() { return true; } ////// /// Raises property changed events in response to structure changes. /// internal void OnStructureInvalidated() { int rowCount = GetRowCount(); if (rowCount != _rowCount) { RaisePropertyChangedEvent(GridPatternIdentifiers.RowCountProperty, _rowCount, rowCount); _rowCount = rowCount; } int columnCount = GetColumnCount(); if (columnCount != _columnCount) { RaisePropertyChangedEvent(GridPatternIdentifiers.ColumnCountProperty, _columnCount, columnCount); _columnCount = columnCount; } } ////// Returns the number of rows. /// private int GetRowCount() { int rows = 0; foreach (TableRowGroup group in ((Table)Owner).RowGroups) { rows += group.Rows.Count; } return rows; } ////// Returns the number of columns. /// private int GetColumnCount() { return ((Table)Owner).ColumnCount; } private int _rowCount; private int _columnCount; //------------------------------------------------------------------- // // IGridProvider Members // //------------------------------------------------------------------- #region IGridProvider Members ////// Returns the provider for the element that is located at the row and /// column location requested by the client. /// IRawElementProviderSimple IGridProvider.GetItem(int row, int column) { if (row < 0 || row >= ((IGridProvider)this).RowCount) { throw new ArgumentOutOfRangeException("row"); } if (column < 0 || column >= ((IGridProvider)this).ColumnCount) { throw new ArgumentOutOfRangeException("column"); } int currentRow = 0; Table table = (Table)Owner; foreach (TableRowGroup group in table.RowGroups) { if (currentRow + group.Rows.Count < row) { currentRow += group.Rows.Count; } else { foreach (TableRow tableRow in group.Rows) { if (currentRow == row) { foreach (TableCell cell in tableRow.Cells) { if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column) { return ProviderFromPeer(CreatePeerForElement(cell)); } } // check spanned cells foreach (TableCell cell in tableRow.SpannedCells) { if (cell.ColumnIndex <= column && cell.ColumnIndex + cell.ColumnSpan > column) { return ProviderFromPeer(CreatePeerForElement(cell)); } } } else { currentRow++; } } } } return null; } ////// Returns the number of rows in the grid at the time this was requested. /// int IGridProvider.RowCount { get { return _rowCount; } } ////// Returns the number of columns in the grid at the time this was requested. /// int IGridProvider.ColumnCount { get { return _columnCount; } } #endregion IGridProvider Members } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _CommandStream.cs
- AccessorTable.cs
- SourceFileBuildProvider.cs
- CompleteWizardStep.cs
- WasAdminWrapper.cs
- CalendarDay.cs
- ImageButton.cs
- InstanceContext.cs
- TabletCollection.cs
- ListViewGroupConverter.cs
- TransactionContextValidator.cs
- DataGridViewControlCollection.cs
- GridSplitterAutomationPeer.cs
- SoapAttributes.cs
- Size3D.cs
- AudioBase.cs
- RootCodeDomSerializer.cs
- Label.cs
- XmlKeywords.cs
- SimpleTextLine.cs
- AsyncResult.cs
- TraceFilter.cs
- ProvidersHelper.cs
- CustomError.cs
- PhysicalOps.cs
- HttpCacheVary.cs
- DataFormats.cs
- PrintPreviewDialog.cs
- ColumnCollection.cs
- SystemIPGlobalProperties.cs
- __ConsoleStream.cs
- PolygonHotSpot.cs
- DbModificationCommandTree.cs
- XmlDesigner.cs
- TagMapInfo.cs
- EnlistmentTraceIdentifier.cs
- DSASignatureFormatter.cs
- FontSizeConverter.cs
- AuthenticationModuleElementCollection.cs
- InputProviderSite.cs
- DirtyTextRange.cs
- DecoderExceptionFallback.cs
- TemplateEditingFrame.cs
- FrameworkElementFactory.cs
- CallSite.cs
- FontEmbeddingManager.cs
- CookieProtection.cs
- NavigationPropertySingletonExpression.cs
- EventLogEntry.cs
- AssemblyCollection.cs
- WebPartHelpVerb.cs
- SqlClientFactory.cs
- TcpServerChannel.cs
- XsdDateTime.cs
- SrgsGrammar.cs
- ClientProxyGenerator.cs
- DocumentSchemaValidator.cs
- CodePageUtils.cs
- AuthorizationSection.cs
- ToolboxService.cs
- PropertyCollection.cs
- XmlValidatingReaderImpl.cs
- WorkflowServiceAttributesTypeConverter.cs
- TypeToken.cs
- ProbeMatchesMessageCD1.cs
- ProcessManager.cs
- UserPreferenceChangedEventArgs.cs
- ImageFormat.cs
- Region.cs
- CrossAppDomainChannel.cs
- ExpanderAutomationPeer.cs
- ChtmlPageAdapter.cs
- SystemResourceHost.cs
- UpdateCommand.cs
- EpmCustomContentDeSerializer.cs
- base64Transforms.cs
- RoleManagerEventArgs.cs
- CachedCompositeFamily.cs
- ToolStripOverflowButton.cs
- XmlDataProvider.cs
- WebPartTransformer.cs
- IntPtr.cs
- TextViewBase.cs
- FileLogRecordEnumerator.cs
- ImageField.cs
- WorkflowWebService.cs
- KernelTypeValidation.cs
- DataRowView.cs
- ListMarkerSourceInfo.cs
- LayoutEngine.cs
- MergeFailedEvent.cs
- RSAPKCS1KeyExchangeFormatter.cs
- SafeWaitHandle.cs
- Symbol.cs
- DataGridViewTopLeftHeaderCell.cs
- ModuleConfigurationInfo.cs
- SamlConstants.cs
- LinearGradientBrush.cs
- Rect.cs
- ProfileModule.cs