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
- BitArray.cs
- ReferencedCollectionType.cs
- SqlVersion.cs
- TableParagraph.cs
- WorkflowDebuggerSteppingAttribute.cs
- DataSourceIDConverter.cs
- ArgumentOutOfRangeException.cs
- FormViewUpdateEventArgs.cs
- SQLByte.cs
- UnsafeNativeMethods.cs
- BinaryFormatter.cs
- TimeManager.cs
- DataGridViewTopLeftHeaderCell.cs
- ActivityTypeCodeDomSerializer.cs
- ModifierKeysValueSerializer.cs
- WebConvert.cs
- DeviceFilterEditorDialog.cs
- TrustSection.cs
- UnmanagedMemoryStreamWrapper.cs
- ButtonRenderer.cs
- DistributedTransactionPermission.cs
- DatagridviewDisplayedBandsData.cs
- FrameworkPropertyMetadata.cs
- TimelineGroup.cs
- SafeWaitHandle.cs
- EdmItemCollection.cs
- PositiveTimeSpanValidatorAttribute.cs
- CallbackValidator.cs
- FlowDocumentReader.cs
- CharConverter.cs
- SoapClientProtocol.cs
- DatagridviewDisplayedBandsData.cs
- WebBaseEventKeyComparer.cs
- PathSegment.cs
- WindowsPen.cs
- WorkflowDesigner.cs
- CrossContextChannel.cs
- Size3DConverter.cs
- DataColumn.cs
- TriggerCollection.cs
- MessageBox.cs
- ZipIOModeEnforcingStream.cs
- XsdValidatingReader.cs
- TimerElapsedEvenArgs.cs
- TemplateControlBuildProvider.cs
- AnnotationComponentChooser.cs
- XmlConvert.cs
- IERequestCache.cs
- XmlC14NWriter.cs
- SyndicationSerializer.cs
- EmptyReadOnlyDictionaryInternal.cs
- HttpRuntime.cs
- TCPClient.cs
- RecordsAffectedEventArgs.cs
- DataReaderContainer.cs
- ToolStripTextBox.cs
- SectionXmlInfo.cs
- KeyConverter.cs
- SettingsBindableAttribute.cs
- LinkConverter.cs
- DeclarativeCatalogPart.cs
- BuildManager.cs
- AsyncCompletedEventArgs.cs
- SafeFileHandle.cs
- DataGrid.cs
- ConnectivityStatus.cs
- LocalizationParserHooks.cs
- ComponentCollection.cs
- MenuItemCollection.cs
- OperandQuery.cs
- DefaultAutoFieldGenerator.cs
- WsdlBuildProvider.cs
- DrawingBrush.cs
- CacheRequest.cs
- Wildcard.cs
- DbConnectionHelper.cs
- InstalledFontCollection.cs
- EntityFunctions.cs
- Internal.cs
- CodeGenerationManager.cs
- PropertyRecord.cs
- MessageQueueAccessControlEntry.cs
- RijndaelManaged.cs
- Wow64ConfigurationLoader.cs
- CodeAttributeArgument.cs
- UserControl.cs
- SelectionWordBreaker.cs
- FontStyle.cs
- BufferedGraphicsManager.cs
- Funcletizer.cs
- ProfileProvider.cs
- ProjectedWrapper.cs
- AuthenticationManager.cs
- ProcessingInstructionAction.cs
- CmsInterop.cs
- SqlOuterApplyReducer.cs
- GPPOINTF.cs
- TextProperties.cs
- Queue.cs
- BooleanAnimationBase.cs