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
- SignatureToken.cs
- TextElement.cs
- DLinqDataModelProvider.cs
- TransformProviderWrapper.cs
- WinHttpWebProxyFinder.cs
- ChannelTokenTypeConverter.cs
- DateTimeStorage.cs
- CleanUpVirtualizedItemEventArgs.cs
- WebRequestModuleElementCollection.cs
- BaseValidator.cs
- PermissionSetTriple.cs
- NamespaceDecl.cs
- tooltip.cs
- StorageConditionPropertyMapping.cs
- TextFragmentEngine.cs
- AsymmetricSignatureDeformatter.cs
- Win32.cs
- SignatureGenerator.cs
- ClientSettingsStore.cs
- BulletedList.cs
- XmlCDATASection.cs
- SqlCacheDependencyDatabaseCollection.cs
- XmlElementAttributes.cs
- FastEncoderWindow.cs
- ThreadExceptionEvent.cs
- TraceFilter.cs
- sqlmetadatafactory.cs
- WebHeaderCollection.cs
- ParseChildrenAsPropertiesAttribute.cs
- DataGridViewCheckBoxCell.cs
- TableLayoutCellPaintEventArgs.cs
- UrlMappingsSection.cs
- FrameworkContentElement.cs
- FixedFlowMap.cs
- PropertyGrid.cs
- MouseActionConverter.cs
- HwndTarget.cs
- XmlUrlEditor.cs
- FilteredAttributeCollection.cs
- MatrixUtil.cs
- FixedTextPointer.cs
- ProfileSection.cs
- SessionIDManager.cs
- PolyLineSegmentFigureLogic.cs
- BindableAttribute.cs
- DecoderBestFitFallback.cs
- Transform3D.cs
- MD5.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- ConvertBinder.cs
- DataTableReader.cs
- GridViewCellAutomationPeer.cs
- DataBindingCollectionEditor.cs
- FontNamesConverter.cs
- HMACSHA1.cs
- FragmentNavigationEventArgs.cs
- GraphicsPathIterator.cs
- ServiceTimeoutsElement.cs
- SafeEventHandle.cs
- GuidelineCollection.cs
- FontSizeConverter.cs
- GroupBoxDesigner.cs
- ArrayList.cs
- StrokeCollection2.cs
- SizeLimitedCache.cs
- FilteredAttributeCollection.cs
- CollectionViewProxy.cs
- HandlerBase.cs
- ColumnCollection.cs
- UInt64.cs
- WmlLinkAdapter.cs
- controlskin.cs
- TabPage.cs
- ObjectCache.cs
- TextCollapsingProperties.cs
- HttpRuntime.cs
- XmlHierarchicalDataSourceView.cs
- TextElementCollection.cs
- PropertyStore.cs
- TabControlEvent.cs
- PlanCompiler.cs
- BuildResultCache.cs
- SubstitutionList.cs
- NavigationHelper.cs
- TextFormatterImp.cs
- GCHandleCookieTable.cs
- ADMembershipUser.cs
- RenderTargetBitmap.cs
- SetterBaseCollection.cs
- InputLanguageEventArgs.cs
- DataRowView.cs
- Vars.cs
- EventPropertyMap.cs
- BatchParser.cs
- GridView.cs
- StandardCommands.cs
- XsdDateTime.cs
- CodeMethodReturnStatement.cs
- XmlParserContext.cs
- CodeSnippetTypeMember.cs