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 List GetChildrenCore()
{
// 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 List GetChildrenCore()
{
// 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
- RtType.cs
- DiagnosticEventProvider.cs
- ProxyAttribute.cs
- Literal.cs
- CaseInsensitiveHashCodeProvider.cs
- ImportDesigner.xaml.cs
- ArglessEventHandlerProxy.cs
- SqlDataSourceConfigureSelectPanel.cs
- TextElementEnumerator.cs
- DataSpaceManager.cs
- ListBoxItemAutomationPeer.cs
- ToolStripManager.cs
- CachedPathData.cs
- EFAssociationProvider.cs
- CodeTypeParameterCollection.cs
- AnnotationDocumentPaginator.cs
- CatalogPart.cs
- FlowLayoutPanel.cs
- HtmlTernaryTree.cs
- TraceContextRecord.cs
- CommonXSendMessage.cs
- TabPanel.cs
- DropSource.cs
- ICspAsymmetricAlgorithm.cs
- FreeFormPanel.cs
- HttpHandlerAction.cs
- DragStartedEventArgs.cs
- GridViewUpdatedEventArgs.cs
- ForceCopyBuildProvider.cs
- XmlSchemaGroupRef.cs
- glyphs.cs
- SqlDataSourceView.cs
- OutputCacheSettings.cs
- LinqMaximalSubtreeNominator.cs
- CacheChildrenQuery.cs
- CodeGenerator.cs
- DateTimeParse.cs
- MachineKeySection.cs
- DataStorage.cs
- AssignDesigner.xaml.cs
- EmptyReadOnlyDictionaryInternal.cs
- ReferencedCollectionType.cs
- ClientTargetCollection.cs
- CompilerScopeManager.cs
- OdbcEnvironmentHandle.cs
- EventItfInfo.cs
- DataGridViewLayoutData.cs
- CreateUserErrorEventArgs.cs
- EndpointReference.cs
- TextOnlyOutput.cs
- DefaultSection.cs
- XmlUrlResolver.cs
- SocketInformation.cs
- LocationUpdates.cs
- EnterpriseServicesHelper.cs
- GridViewUpdateEventArgs.cs
- XmlSecureResolver.cs
- PerformanceCounterLib.cs
- ButtonFlatAdapter.cs
- CriticalFinalizerObject.cs
- ObjectDataProvider.cs
- Verify.cs
- EntityParameter.cs
- SqlPersistenceProviderFactory.cs
- SelectionManager.cs
- ModifierKeysConverter.cs
- OleDbConnectionInternal.cs
- QueryResponse.cs
- MetadataUtil.cs
- BitmapEffectDrawingContent.cs
- ActivityStatusChangeEventArgs.cs
- arc.cs
- IChannel.cs
- JournalEntryStack.cs
- CellTreeNode.cs
- Empty.cs
- SimpleApplicationHost.cs
- RuleInfoComparer.cs
- SafeViewOfFileHandle.cs
- StoreItemCollection.Loader.cs
- ModelItemCollection.cs
- SafeNativeMethods.cs
- ToolStripContentPanelRenderEventArgs.cs
- ImportRequest.cs
- TdsParserHelperClasses.cs
- TextRunProperties.cs
- ProcessInfo.cs
- ConfigXmlElement.cs
- ImageClickEventArgs.cs
- RIPEMD160Managed.cs
- TreeViewImageKeyConverter.cs
- MulticastNotSupportedException.cs
- SqlTriggerContext.cs
- MergeLocalizationDirectives.cs
- AssemblyFilter.cs
- EncoderParameter.cs
- ActivityPreviewDesigner.cs
- DoubleAnimationUsingPath.cs
- ArrayConverter.cs
- SBCSCodePageEncoding.cs