Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / DataGridRowAutomationPeer.cs / 1305600 / DataGridRowAutomationPeer.cs
using System; using System.Collections.Generic; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using MS.Internal; namespace System.Windows.Automation.Peers { ////// AutomationPeer for DataGridRow /// public sealed class DataGridRowAutomationPeer : FrameworkElementAutomationPeer { #region Constructors ////// AutomationPeer for DataGridRow /// /// DataGridRow public DataGridRowAutomationPeer(DataGridRow owner) : base(owner) { if (owner == null) { throw new ArgumentNullException("owner"); } } #endregion #region AutomationPeer Overrides ////// Gets the control type for the element that is associated with the UI Automation peer. /// ///The control type. protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.DataItem; } ////// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType, /// differentiates the control represented by this AutomationPeer. /// ///The string that contains the name. protected override string GetClassNameCore() { return Owner.GetType().Name; } /// protected override ListGetChildrenCore() { // see whether the DataGridRow uses the standard control template DataGridCellsPresenter cellsPresenter = OwningDataGridRow.CellsPresenter; if (cellsPresenter != null && cellsPresenter.ItemsHost != null) { // this is the normal case List children = new List (3); // Step 1: Add row header if exists AutomationPeer dataGridRowHeaderAutomationPeer = RowHeaderAutomationPeer; if (dataGridRowHeaderAutomationPeer != null) { children.Add(dataGridRowHeaderAutomationPeer); } // Step 2: Add all cells DataGridItemAutomationPeer itemPeer = this.EventsSource as DataGridItemAutomationPeer; if (itemPeer != null) { children.AddRange(itemPeer.GetCellItemPeers()); } // Step 3: Add DetailsPresenter last if exists AutomationPeer dataGridDetailsPresenterAutomationPeer = DetailsPresenterAutomationPeer; if (dataGridDetailsPresenterAutomationPeer != null) { children.Add(dataGridDetailsPresenterAutomationPeer); } return children; } else { // in the unusual case where the app uses a non-standard control template // for the DataGridRow, fall back to the base implementation return base.GetChildrenCore(); } } /// override protected bool IsOffscreenCore() { if (!Owner.IsVisible) return true; Rect boundingRect = CalculateVisibleBoundingRect(); return DoubleUtil.AreClose(boundingRect, Rect.Empty) || DoubleUtil.AreClose(boundingRect.Height, 0.0) || DoubleUtil.AreClose(boundingRect.Width, 0.0); } #endregion #region Private helpers internal AutomationPeer RowHeaderAutomationPeer { get { DataGridRowHeader dataGridRowHeader = OwningDataGridRow.RowHeader; if (dataGridRowHeader != null) { return CreatePeerForElement(dataGridRowHeader); } return null; } } private AutomationPeer DetailsPresenterAutomationPeer { get { DataGridDetailsPresenter dataGridDetailsPresenter = OwningDataGridRow.DetailsPresenter; if (dataGridDetailsPresenter != null) { return CreatePeerForElement(dataGridDetailsPresenter); } return null; } } private DataGridRow OwningDataGridRow { get { return (DataGridRow)Owner; } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using MS.Internal; namespace System.Windows.Automation.Peers { /// /// AutomationPeer for DataGridRow /// public sealed class DataGridRowAutomationPeer : FrameworkElementAutomationPeer { #region Constructors ////// AutomationPeer for DataGridRow /// /// DataGridRow public DataGridRowAutomationPeer(DataGridRow owner) : base(owner) { if (owner == null) { throw new ArgumentNullException("owner"); } } #endregion #region AutomationPeer Overrides ////// Gets the control type for the element that is associated with the UI Automation peer. /// ///The control type. protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.DataItem; } ////// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType, /// differentiates the control represented by this AutomationPeer. /// ///The string that contains the name. protected override string GetClassNameCore() { return Owner.GetType().Name; } /// protected override ListGetChildrenCore() { // see whether the DataGridRow uses the standard control template DataGridCellsPresenter cellsPresenter = OwningDataGridRow.CellsPresenter; if (cellsPresenter != null && cellsPresenter.ItemsHost != null) { // this is the normal case List children = new List (3); // Step 1: Add row header if exists AutomationPeer dataGridRowHeaderAutomationPeer = RowHeaderAutomationPeer; if (dataGridRowHeaderAutomationPeer != null) { children.Add(dataGridRowHeaderAutomationPeer); } // Step 2: Add all cells DataGridItemAutomationPeer itemPeer = this.EventsSource as DataGridItemAutomationPeer; if (itemPeer != null) { children.AddRange(itemPeer.GetCellItemPeers()); } // Step 3: Add DetailsPresenter last if exists AutomationPeer dataGridDetailsPresenterAutomationPeer = DetailsPresenterAutomationPeer; if (dataGridDetailsPresenterAutomationPeer != null) { children.Add(dataGridDetailsPresenterAutomationPeer); } return children; } else { // in the unusual case where the app uses a non-standard control template // for the DataGridRow, fall back to the base implementation return base.GetChildrenCore(); } } /// override protected bool IsOffscreenCore() { if (!Owner.IsVisible) return true; Rect boundingRect = CalculateVisibleBoundingRect(); return DoubleUtil.AreClose(boundingRect, Rect.Empty) || DoubleUtil.AreClose(boundingRect.Height, 0.0) || DoubleUtil.AreClose(boundingRect.Width, 0.0); } #endregion #region Private helpers internal AutomationPeer RowHeaderAutomationPeer { get { DataGridRowHeader dataGridRowHeader = OwningDataGridRow.RowHeader; if (dataGridRowHeader != null) { return CreatePeerForElement(dataGridRowHeader); } return null; } } private AutomationPeer DetailsPresenterAutomationPeer { get { DataGridDetailsPresenter dataGridDetailsPresenter = OwningDataGridRow.DetailsPresenter; if (dataGridDetailsPresenter != null) { return CreatePeerForElement(dataGridDetailsPresenter); } return null; } } private DataGridRow OwningDataGridRow { get { return (DataGridRow)Owner; } } #endregion } } // 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
- StylusPointPropertyId.cs
- ActivationServices.cs
- CultureNotFoundException.cs
- CodeDirectiveCollection.cs
- LinqDataView.cs
- DomainUpDown.cs
- Page.cs
- XamlWrappingReader.cs
- ListBoxDesigner.cs
- TemplateXamlParser.cs
- SiteMapDataSource.cs
- DataGridColumn.cs
- ConnectionPoint.cs
- BitmapEffectGeneralTransform.cs
- JapaneseCalendar.cs
- SiteMapDataSourceView.cs
- AutomationAttributeInfo.cs
- ContentDisposition.cs
- RefreshEventArgs.cs
- RtType.cs
- ParameterToken.cs
- HttpListenerRequest.cs
- RightsManagementManager.cs
- PageThemeBuildProvider.cs
- SelectionRangeConverter.cs
- XmlSchemaComplexContent.cs
- DoubleLink.cs
- DataMisalignedException.cs
- Exception.cs
- CodeDefaultValueExpression.cs
- Size3D.cs
- GradientSpreadMethodValidation.cs
- NamespaceTable.cs
- PeerInvitationResponse.cs
- _UriSyntax.cs
- TextPenaltyModule.cs
- versioninfo.cs
- ExpressionBuilder.cs
- TextEndOfLine.cs
- ServiceAuthorizationBehavior.cs
- PackWebRequest.cs
- AttachmentService.cs
- Component.cs
- IntegerFacetDescriptionElement.cs
- MultiPropertyDescriptorGridEntry.cs
- RectangleConverter.cs
- TogglePatternIdentifiers.cs
- ScrollProviderWrapper.cs
- PolyQuadraticBezierSegment.cs
- NestedContainer.cs
- SmtpFailedRecipientsException.cs
- DecoderReplacementFallback.cs
- DebugView.cs
- FlowPosition.cs
- VarRemapper.cs
- ExternalException.cs
- BasePattern.cs
- ExtensionSimplifierMarkupObject.cs
- BuildProvider.cs
- WebPartUtil.cs
- Visual3D.cs
- ListBindingHelper.cs
- DownloadProgressEventArgs.cs
- Debugger.cs
- SQLResource.cs
- SqlNotificationRequest.cs
- ScriptControlDescriptor.cs
- SqlFormatter.cs
- Utils.cs
- DbConnectionOptions.cs
- PathNode.cs
- ResourceWriter.cs
- _ConnectionGroup.cs
- SafeNativeMethodsCLR.cs
- OracleCommandSet.cs
- FocusWithinProperty.cs
- InstanceValue.cs
- WebCategoryAttribute.cs
- OutOfMemoryException.cs
- SortQuery.cs
- Track.cs
- Int32Collection.cs
- SqlGenericUtil.cs
- NodeFunctions.cs
- DesignerLabelAdapter.cs
- Stroke.cs
- PreservationFileReader.cs
- ComMethodElement.cs
- ContainerSelectorGlyph.cs
- PropertyNames.cs
- FtpWebRequest.cs
- Compiler.cs
- ServiceDescriptionSerializer.cs
- EditorPartDesigner.cs
- StickyNoteAnnotations.cs
- PropertyDescriptorGridEntry.cs
- AccessViolationException.cs
- WindowsFormsHelpers.cs
- IncrementalCompileAnalyzer.cs
- TextElementEnumerator.cs