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
- ContainerParaClient.cs
- CalendarAutoFormat.cs
- IsolatedStorageFile.cs
- DataGridDetailsPresenterAutomationPeer.cs
- SetIterators.cs
- BitmapEffectState.cs
- JobStaple.cs
- PlainXmlDeserializer.cs
- ReadWriteObjectLock.cs
- InstanceView.cs
- WsatAdminException.cs
- MarshalDirectiveException.cs
- ReturnType.cs
- WriteableOnDemandPackagePart.cs
- EmptyStringExpandableObjectConverter.cs
- PolicyVersionConverter.cs
- ReaderOutput.cs
- ToolStripSplitButton.cs
- DataGridViewSortCompareEventArgs.cs
- DataGridRow.cs
- KeyedQueue.cs
- StylusShape.cs
- ConstructorBuilder.cs
- TextOptionsInternal.cs
- RegexGroupCollection.cs
- XmlMtomReader.cs
- XmlWriter.cs
- Array.cs
- ContentDisposition.cs
- HandleValueEditor.cs
- TdsValueSetter.cs
- Environment.cs
- Object.cs
- X509ChainElement.cs
- IsolatedStorageFile.cs
- ChannelDispatcherBase.cs
- LoginStatusDesigner.cs
- SrgsSubset.cs
- ParserOptions.cs
- DocumentationServerProtocol.cs
- RawMouseInputReport.cs
- DrawingAttributeSerializer.cs
- TaiwanLunisolarCalendar.cs
- Itemizer.cs
- DefaultTraceListener.cs
- ListControl.cs
- HtmlControl.cs
- TextEditorTyping.cs
- FixedSOMGroup.cs
- BaseDataBoundControl.cs
- SchemaLookupTable.cs
- WebPartMovingEventArgs.cs
- PointLight.cs
- BaseTreeIterator.cs
- ContainerAction.cs
- HyperLinkField.cs
- TracePayload.cs
- PTProvider.cs
- PrinterSettings.cs
- OpacityConverter.cs
- ToolStripOverflowButton.cs
- RequestCacheManager.cs
- localization.cs
- DrawingContextWalker.cs
- FormViewPagerRow.cs
- BaseTemplateParser.cs
- MethodExpr.cs
- StyleHelper.cs
- datacache.cs
- TreeWalkHelper.cs
- AppDomain.cs
- CharEnumerator.cs
- Properties.cs
- WebPartMovingEventArgs.cs
- MenuCommand.cs
- Stylesheet.cs
- DataRecord.cs
- WorkflowElementDialog.cs
- WebServiceTypeData.cs
- SingleObjectCollection.cs
- TextTreeInsertElementUndoUnit.cs
- BitmapFrameDecode.cs
- ResourcesGenerator.cs
- ElementAction.cs
- OracleMonthSpan.cs
- NativeBuffer.cs
- XmlExpressionDumper.cs
- XmlCharCheckingWriter.cs
- PaperSource.cs
- CodeParameterDeclarationExpression.cs
- GridEntryCollection.cs
- HtmlPageAdapter.cs
- SweepDirectionValidation.cs
- BamlLocalizer.cs
- Shape.cs
- MailBnfHelper.cs
- QueryContinueDragEvent.cs
- TreeNode.cs
- InstallerTypeAttribute.cs
- ConfigPathUtility.cs