Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / GridViewItemAutomationPeer.cs / 1305600 / GridViewItemAutomationPeer.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 GridViewItemAutomationPeer : ListBoxItemAutomationPeer { /// public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP) : base(owner, listviewAP) { Invariant.Assert(owner != null); Invariant.Assert(listviewAP != null); _item = owner; _listviewAP = listviewAP; } /// override protected string GetClassNameCore() { return "ListViewItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.DataItem; } /// protected override ListGetChildrenCore() { ListView listview = _listviewAP.Owner as ListView; Invariant.Assert(listview != null); ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem; if (lvi != null) { GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter; if (rowPresenter != null) { Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse _dataChildren = new Hashtable(rowPresenter.ActualCells.Count); List list = new List (); int row = listview.Items.IndexOf(_item); int column = 0; foreach (UIElement ele in rowPresenter.ActualCells) { GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]); if (peer == null) { if (ele is ContentPresenter) { peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP); } else if (ele is TextBlock) { peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP); } else { Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock"); } } //protection from indistinguishable UIElement - for example, 2 UIElement wiht same value if (_dataChildren[ele] == null) { //Set Cell's row and column peer.Column = column; peer.Row = row; list.Add(peer); _dataChildren.Add(ele, peer); column++; } } return list; } } return null; } #region Private Fields private object _item; private ListViewAutomationPeer _listviewAP; private Hashtable _dataChildren = null; #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 GridViewItemAutomationPeer : ListBoxItemAutomationPeer { /// public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP) : base(owner, listviewAP) { Invariant.Assert(owner != null); Invariant.Assert(listviewAP != null); _item = owner; _listviewAP = listviewAP; } /// override protected string GetClassNameCore() { return "ListViewItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.DataItem; } /// protected override List GetChildrenCore() { ListView listview = _listviewAP.Owner as ListView; Invariant.Assert(listview != null); ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem; if (lvi != null) { GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter; if (rowPresenter != null) { Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse _dataChildren = new Hashtable(rowPresenter.ActualCells.Count); List list = new List (); int row = listview.Items.IndexOf(_item); int column = 0; foreach (UIElement ele in rowPresenter.ActualCells) { GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]); if (peer == null) { if (ele is ContentPresenter) { peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP); } else if (ele is TextBlock) { peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP); } else { Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock"); } } //protection from indistinguishable UIElement - for example, 2 UIElement wiht same value if (_dataChildren[ele] == null) { //Set Cell's row and column peer.Column = column; peer.Row = row; list.Add(peer); _dataChildren.Add(ele, peer); column++; } } return list; } } return null; } #region Private Fields private object _item; private ListViewAutomationPeer _listviewAP; private Hashtable _dataChildren = null; #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
- Bold.cs
- WebResourceAttribute.cs
- SqlNodeAnnotation.cs
- AspNetRouteServiceHttpHandler.cs
- AbandonedMutexException.cs
- SizeAnimationClockResource.cs
- BindingCollection.cs
- WebPartConnectionsEventArgs.cs
- OracleException.cs
- TextServicesDisplayAttributePropertyRanges.cs
- DeviceFiltersSection.cs
- MultiDataTrigger.cs
- PeerUnsafeNativeCryptMethods.cs
- ErrorWrapper.cs
- SqlProcedureAttribute.cs
- Int64Storage.cs
- Metadata.cs
- SqlDependencyListener.cs
- XmlIlTypeHelper.cs
- safesecurityhelperavalon.cs
- MultiSelectRootGridEntry.cs
- TypePropertyEditor.cs
- UnrecognizedAssertionsBindingElement.cs
- TrimSurroundingWhitespaceAttribute.cs
- OdbcPermission.cs
- StreamGeometry.cs
- SHA512.cs
- Comparer.cs
- ExpressionPrefixAttribute.cs
- BorderSidesEditor.cs
- TextDecoration.cs
- XmlBaseWriter.cs
- DesignerListAdapter.cs
- PageSettings.cs
- FormViewUpdatedEventArgs.cs
- PersistenceMetadataNamespace.cs
- TypeUnloadedException.cs
- ModulesEntry.cs
- UniqueEventHelper.cs
- Vector3DCollectionValueSerializer.cs
- TemplateField.cs
- RC2.cs
- CodeTypeConstructor.cs
- SspiNegotiationTokenAuthenticatorState.cs
- CharConverter.cs
- sqlnorm.cs
- AvtEvent.cs
- EntityDataSourceWrapper.cs
- StylusEditingBehavior.cs
- RNGCryptoServiceProvider.cs
- FamilyTypefaceCollection.cs
- PresentationSource.cs
- _SpnDictionary.cs
- DrawingCollection.cs
- Missing.cs
- EmptyStringExpandableObjectConverter.cs
- XmlQualifiedName.cs
- InteropBitmapSource.cs
- SqlParameterCollection.cs
- OracleRowUpdatedEventArgs.cs
- CodeChecksumPragma.cs
- DiagnosticsConfigurationHandler.cs
- TextDecorationCollectionConverter.cs
- EnumValAlphaComparer.cs
- FormsIdentity.cs
- ObjectItemNoOpAssemblyLoader.cs
- Collection.cs
- CodeGroup.cs
- DataGridViewSortCompareEventArgs.cs
- TemplateBuilder.cs
- JavaScriptSerializer.cs
- PageThemeBuildProvider.cs
- mediaclock.cs
- OdbcCommand.cs
- JavascriptXmlWriterWrapper.cs
- SendActivityEventArgs.cs
- ProxyGenerator.cs
- WebPartsSection.cs
- SHA256Managed.cs
- ToolTipService.cs
- URLMembershipCondition.cs
- Utils.cs
- ScopeElementCollection.cs
- AdobeCFFWrapper.cs
- HealthMonitoringSection.cs
- SqlDataSourceCommandEventArgs.cs
- cookiecollection.cs
- PowerModeChangedEventArgs.cs
- DelegateSerializationHolder.cs
- ObservableDictionary.cs
- TextSelectionProcessor.cs
- ACL.cs
- Vector3DAnimationBase.cs
- _SSPISessionCache.cs
- CompiledRegexRunner.cs
- Latin1Encoding.cs
- ActiveXSite.cs
- SQLInt32Storage.cs
- XamlSerializer.cs
- BamlRecordReader.cs