Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Automation / Peers / GridViewCellAutomationPeer.cs / 1 / GridViewCellAutomationPeer.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
using System.Windows.Media;
using MS.Internal;
using MS.Win32;
namespace System.Windows.Automation.Peers
{
///
public class GridViewCellAutomationPeer : FrameworkElementAutomationPeer, ITableItemProvider
{
///
internal GridViewCellAutomationPeer(ContentPresenter owner, ListViewAutomationPeer parent)
: base(owner)
{
Invariant.Assert(parent != null);
_listviewAP = parent;
}
///
internal GridViewCellAutomationPeer(TextBlock owner, ListViewAutomationPeer parent)
: base(owner)
{
Invariant.Assert(parent != null);
_listviewAP = parent;
}
///
protected override string GetClassNameCore()
{
return Owner.GetType().Name;
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
if (Owner is TextBlock)
{
return AutomationControlType.Text;
}
else
{
return AutomationControlType.Custom;
}
}
///
override public object GetPattern(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.GridItem || patternInterface == PatternInterface.TableItem)
{
return this;
}
return base.GetPattern(patternInterface);
}
///
protected override bool IsControlElementCore()
{
if (Owner is TextBlock)
{
return true;
}
else
{
List children = GetChildrenAutomationPeer(Owner);
return children != null && children.Count >= 1;
}
}
internal int Column
{
get { return _column; }
set { _column = value; }
}
internal int Row
{
get { return _row; }
set { _row = value; }
}
#region ITableItem
IRawElementProviderSimple[] ITableItemProvider.GetRowHeaderItems()
{
//If there are no row headers, return an empty array
return new IRawElementProviderSimple[0];
}
IRawElementProviderSimple[] ITableItemProvider.GetColumnHeaderItems()
{
ListView listview = _listviewAP.Owner as ListView;
if (listview != null && listview.View is GridView)
{
GridView gridview = listview.View as GridView;
if (gridview.HeaderRowPresenter != null && gridview.HeaderRowPresenter.ActualColumnHeaders.Count > Column)
{
GridViewColumnHeader header = gridview.HeaderRowPresenter.ActualColumnHeaders[Column];
AutomationPeer peer = UIElementAutomationPeer.FromElement(header);
if (peer != null)
{
return new IRawElementProviderSimple[] { ProviderFromPeer(peer) };
}
}
}
return new IRawElementProviderSimple[0];
}
#endregion
#region IGridItem
int IGridItemProvider.Row { get { return Row; } }
int IGridItemProvider.Column { get { return Column; } }
int IGridItemProvider.RowSpan { get { return 1; } }
int IGridItemProvider.ColumnSpan { get { return 1; } }
IRawElementProviderSimple IGridItemProvider.ContainingGrid { get { return ProviderFromPeer(_listviewAP); } }
#endregion
#region Private Methods
///
/// Get the children of the parent which has automation peer
///
private List GetChildrenAutomationPeer(Visual parent)
{
Invariant.Assert(parent != null);
List children = null;
iterate(parent,
(IteratorCallback)delegate(AutomationPeer peer)
{
if (children == null)
children = new List();
children.Add(peer);
return (false);
});
return children;
}
private delegate bool IteratorCallback(AutomationPeer peer);
//
private static bool iterate(Visual parent, IteratorCallback callback)
{
bool done = false;
AutomationPeer peer = null;
int count = parent.InternalVisualChildrenCount;
for (int i = 0; i < count && !done; i++)
{
Visual child = parent.InternalGetVisualChild(i);
if (child != null
&& child.CheckFlagsAnd(VisualFlags.IsUIElement)
&& (peer = CreatePeerForElement((UIElement)child)) != null)
{
done = callback(peer);
}
else
{
done = iterate(child, callback);
}
}
return (done);
}
#endregion
#region Private Fields
private ListViewAutomationPeer _listviewAP;
private int _column;
private int _row;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
using System.Windows.Media;
using MS.Internal;
using MS.Win32;
namespace System.Windows.Automation.Peers
{
///
public class GridViewCellAutomationPeer : FrameworkElementAutomationPeer, ITableItemProvider
{
///
internal GridViewCellAutomationPeer(ContentPresenter owner, ListViewAutomationPeer parent)
: base(owner)
{
Invariant.Assert(parent != null);
_listviewAP = parent;
}
///
internal GridViewCellAutomationPeer(TextBlock owner, ListViewAutomationPeer parent)
: base(owner)
{
Invariant.Assert(parent != null);
_listviewAP = parent;
}
///
protected override string GetClassNameCore()
{
return Owner.GetType().Name;
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
if (Owner is TextBlock)
{
return AutomationControlType.Text;
}
else
{
return AutomationControlType.Custom;
}
}
///
override public object GetPattern(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.GridItem || patternInterface == PatternInterface.TableItem)
{
return this;
}
return base.GetPattern(patternInterface);
}
///
protected override bool IsControlElementCore()
{
if (Owner is TextBlock)
{
return true;
}
else
{
List children = GetChildrenAutomationPeer(Owner);
return children != null && children.Count >= 1;
}
}
internal int Column
{
get { return _column; }
set { _column = value; }
}
internal int Row
{
get { return _row; }
set { _row = value; }
}
#region ITableItem
IRawElementProviderSimple[] ITableItemProvider.GetRowHeaderItems()
{
//If there are no row headers, return an empty array
return new IRawElementProviderSimple[0];
}
IRawElementProviderSimple[] ITableItemProvider.GetColumnHeaderItems()
{
ListView listview = _listviewAP.Owner as ListView;
if (listview != null && listview.View is GridView)
{
GridView gridview = listview.View as GridView;
if (gridview.HeaderRowPresenter != null && gridview.HeaderRowPresenter.ActualColumnHeaders.Count > Column)
{
GridViewColumnHeader header = gridview.HeaderRowPresenter.ActualColumnHeaders[Column];
AutomationPeer peer = UIElementAutomationPeer.FromElement(header);
if (peer != null)
{
return new IRawElementProviderSimple[] { ProviderFromPeer(peer) };
}
}
}
return new IRawElementProviderSimple[0];
}
#endregion
#region IGridItem
int IGridItemProvider.Row { get { return Row; } }
int IGridItemProvider.Column { get { return Column; } }
int IGridItemProvider.RowSpan { get { return 1; } }
int IGridItemProvider.ColumnSpan { get { return 1; } }
IRawElementProviderSimple IGridItemProvider.ContainingGrid { get { return ProviderFromPeer(_listviewAP); } }
#endregion
#region Private Methods
///
/// Get the children of the parent which has automation peer
///
private List GetChildrenAutomationPeer(Visual parent)
{
Invariant.Assert(parent != null);
List children = null;
iterate(parent,
(IteratorCallback)delegate(AutomationPeer peer)
{
if (children == null)
children = new List();
children.Add(peer);
return (false);
});
return children;
}
private delegate bool IteratorCallback(AutomationPeer peer);
//
private static bool iterate(Visual parent, IteratorCallback callback)
{
bool done = false;
AutomationPeer peer = null;
int count = parent.InternalVisualChildrenCount;
for (int i = 0; i < count && !done; i++)
{
Visual child = parent.InternalGetVisualChild(i);
if (child != null
&& child.CheckFlagsAnd(VisualFlags.IsUIElement)
&& (peer = CreatePeerForElement((UIElement)child)) != null)
{
done = callback(peer);
}
else
{
done = iterate(child, callback);
}
}
return (done);
}
#endregion
#region Private Fields
private ListViewAutomationPeer _listviewAP;
private int _column;
private int _row;
#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
- FontStyle.cs
- XmlDocumentSerializer.cs
- TreeNodeSelectionProcessor.cs
- ProfileService.cs
- BrowserTree.cs
- SynchronizedInputHelper.cs
- DeclarativeCatalogPart.cs
- SQLBytes.cs
- ClientConfigurationSystem.cs
- WindowsAuthenticationModule.cs
- WinFormsSpinner.cs
- DbParameterHelper.cs
- SystemIcons.cs
- DataGridViewMethods.cs
- XmlDocumentSurrogate.cs
- Oci.cs
- CompiledXpathExpr.cs
- InstanceData.cs
- NamespaceDisplayAutomationPeer.cs
- LogicalTreeHelper.cs
- FileInfo.cs
- ResXResourceWriter.cs
- TextAdaptor.cs
- SkinBuilder.cs
- DateTimeOffset.cs
- EdgeModeValidation.cs
- SecurityState.cs
- MsmqAppDomainProtocolHandler.cs
- IdentitySection.cs
- XmlHierarchyData.cs
- Solver.cs
- PeerNameResolver.cs
- X509Certificate.cs
- FtpCachePolicyElement.cs
- TraceEventCache.cs
- CompositeControl.cs
- DesignSurfaceCollection.cs
- odbcmetadatacolumnnames.cs
- TextCompositionEventArgs.cs
- VectorAnimationUsingKeyFrames.cs
- ListViewTableRow.cs
- RepeatButtonAutomationPeer.cs
- ToolStripSplitButton.cs
- lengthconverter.cs
- FontStretch.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- InternalBase.cs
- RotateTransform.cs
- XmlStreamStore.cs
- MenuItemCollection.cs
- UnsafeNativeMethods.cs
- ChannelManagerBase.cs
- ExtensionSurface.cs
- PrivacyNoticeElement.cs
- IIS7WorkerRequest.cs
- ScrollBar.cs
- CharacterBuffer.cs
- UIElement3D.cs
- GPPOINTF.cs
- MatrixValueSerializer.cs
- XpsFont.cs
- DataGridViewColumnCollection.cs
- MimePart.cs
- WorkflowRuntimeElement.cs
- AssemblyInfo.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- ClosableStream.cs
- BuildResult.cs
- Button.cs
- ModuleBuilderData.cs
- RegistryKey.cs
- _KerberosClient.cs
- EvidenceBase.cs
- CalloutQueueItem.cs
- EndpointReference.cs
- ListViewCancelEventArgs.cs
- TextAutomationPeer.cs
- SuppressMessageAttribute.cs
- ModelTypeConverter.cs
- WorkflowRuntimeService.cs
- SynchronizationHandlesCodeDomSerializer.cs
- SafeSecurityHandles.cs
- CollectionViewGroupInternal.cs
- MarkupCompilePass1.cs
- NumberEdit.cs
- ValidationHelper.cs
- HyperlinkAutomationPeer.cs
- HtmlLink.cs
- RadioButtonRenderer.cs
- PropertyEmitterBase.cs
- Preprocessor.cs
- FileDetails.cs
- ChannelBuilder.cs
- UInt64.cs
- CacheChildrenQuery.cs
- OracleEncoding.cs
- ButtonRenderer.cs
- WmlValidatorAdapter.cs
- UIPropertyMetadata.cs
- FlowDocumentPage.cs