Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Automation / Peers / GroupItemAutomationPeer.cs / 1 / GroupItemAutomationPeer.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.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class GroupItemAutomationPeer : FrameworkElementAutomationPeer { /// public GroupItemAutomationPeer(GroupItem owner): base(owner) { } /// override protected string GetClassNameCore() { return "GroupItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Group; } /// protected override ListGetChildrenCore() { GroupItem owner = (GroupItem)Owner; ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(Owner); if (itemsControl != null) { ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer; if (itemsControlAP != null) { ItemContainerGenerator generator = owner.Generator; if (generator != null) { IList items = generator.Items; List children = new List (items.Count); ItemPeersStorage oldChildren = _dataChildren; //cache the old ones for possible reuse _dataChildren = new ItemPeersStorage(); if (items.Count > 0) { foreach (object item in items) { CollectionViewGroup cvg = item as CollectionViewGroup; if (cvg != null) { GroupItem groupItem = generator.ContainerFromItem(item) as GroupItem; if (groupItem != null) { GroupItemAutomationPeer peer = groupItem.CreateAutomationPeer() as GroupItemAutomationPeer; if (peer != null) children.Add(peer); } } else { //try to reuse old peer if it exists ItemAutomationPeer peer = oldChildren[item]; //no old peer - create new one if (peer == null) peer = itemsControlAP.CreateItemAutomationPeerInternal(item); //perform hookup so the events sourced from wrapper peer are fired as if from the data item if (peer != null) { AutomationPeer wrapperPeer = peer.GetWrapperPeer(); if (wrapperPeer != null) wrapperPeer.EventsSource = peer; } //protection from indistinguishable items - for example, 2 strings with same value //this scenario does not work in ItemsControl however is not checked for. if (_dataChildren[item] == null) { children.Add(peer); _dataChildren[item] = peer; // Update ItemsControl cache too // ItemPeers needs to be updated because used in Selector and other ItemsControl subclasses to access item peers directly if (itemsControlAP.ItemPeers[item] == null) { itemsControlAP.ItemPeers[item] = peer; } } } } return children; } } } } return null; } private ItemPeersStorage _dataChildren = new ItemPeersStorage(); } } // 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.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class GroupItemAutomationPeer : FrameworkElementAutomationPeer { /// public GroupItemAutomationPeer(GroupItem owner): base(owner) { } /// override protected string GetClassNameCore() { return "GroupItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Group; } /// protected override List GetChildrenCore() { GroupItem owner = (GroupItem)Owner; ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(Owner); if (itemsControl != null) { ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer; if (itemsControlAP != null) { ItemContainerGenerator generator = owner.Generator; if (generator != null) { IList items = generator.Items; List children = new List (items.Count); ItemPeersStorage oldChildren = _dataChildren; //cache the old ones for possible reuse _dataChildren = new ItemPeersStorage(); if (items.Count > 0) { foreach (object item in items) { CollectionViewGroup cvg = item as CollectionViewGroup; if (cvg != null) { GroupItem groupItem = generator.ContainerFromItem(item) as GroupItem; if (groupItem != null) { GroupItemAutomationPeer peer = groupItem.CreateAutomationPeer() as GroupItemAutomationPeer; if (peer != null) children.Add(peer); } } else { //try to reuse old peer if it exists ItemAutomationPeer peer = oldChildren[item]; //no old peer - create new one if (peer == null) peer = itemsControlAP.CreateItemAutomationPeerInternal(item); //perform hookup so the events sourced from wrapper peer are fired as if from the data item if (peer != null) { AutomationPeer wrapperPeer = peer.GetWrapperPeer(); if (wrapperPeer != null) wrapperPeer.EventsSource = peer; } //protection from indistinguishable items - for example, 2 strings with same value //this scenario does not work in ItemsControl however is not checked for. if (_dataChildren[item] == null) { children.Add(peer); _dataChildren[item] = peer; // Update ItemsControl cache too // ItemPeers needs to be updated because used in Selector and other ItemsControl subclasses to access item peers directly if (itemsControlAP.ItemPeers[item] == null) { itemsControlAP.ItemPeers[item] = peer; } } } } return children; } } } } return null; } private ItemPeersStorage _dataChildren = new ItemPeersStorage(); } } // 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
- ToolStripDesigner.cs
- TcpTransportManager.cs
- InternalResources.cs
- LoginUtil.cs
- ExpressionStringBuilder.cs
- TemplateControl.cs
- CreatingCookieEventArgs.cs
- RegexTree.cs
- ReadContentAsBinaryHelper.cs
- AuthenticationManager.cs
- SortedList.cs
- ZoneIdentityPermission.cs
- ScriptManager.cs
- TabletCollection.cs
- ApplicationSecurityManager.cs
- FixedDocument.cs
- ConnectionConsumerAttribute.cs
- FontDifferentiator.cs
- ADConnectionHelper.cs
- TraceSection.cs
- DelegateSerializationHolder.cs
- StrokeSerializer.cs
- RsaSecurityTokenAuthenticator.cs
- _NegoStream.cs
- BaseProcessor.cs
- EventArgs.cs
- SafeNativeMethods.cs
- OleDbDataAdapter.cs
- UriTemplateHelpers.cs
- IsolationInterop.cs
- _ShellExpression.cs
- ToolStripItem.cs
- DeclarativeCatalogPart.cs
- MimeTypeAttribute.cs
- HwndTarget.cs
- GridViewDeletedEventArgs.cs
- HMACRIPEMD160.cs
- ConfigXmlWhitespace.cs
- ConfigurationValues.cs
- StandardCommandToolStripMenuItem.cs
- MdImport.cs
- ThreadStaticAttribute.cs
- CallId.cs
- TemplateManager.cs
- safex509handles.cs
- WmlPageAdapter.cs
- DbConnectionStringBuilder.cs
- MenuStrip.cs
- AccessViolationException.cs
- AuthenticateEventArgs.cs
- FontStyleConverter.cs
- MinimizableAttributeTypeConverter.cs
- PropertyManager.cs
- RIPEMD160Managed.cs
- ExpressionHelper.cs
- WhitespaceSignificantCollectionAttribute.cs
- WinFormsUtils.cs
- PixelShader.cs
- Marshal.cs
- SafeFileHandle.cs
- DesignDataSource.cs
- SafeFileHandle.cs
- _NegoStream.cs
- BuiltInExpr.cs
- DoubleLinkList.cs
- DropShadowEffect.cs
- MsmqReceiveParameters.cs
- ValuePatternIdentifiers.cs
- Rfc2898DeriveBytes.cs
- HierarchicalDataBoundControl.cs
- CodeAttributeArgumentCollection.cs
- SchemaContext.cs
- CodeCompiler.cs
- SqlBuffer.cs
- MetadataCache.cs
- BinaryReader.cs
- MdiWindowListItemConverter.cs
- GregorianCalendarHelper.cs
- SystemException.cs
- XmlSerializerVersionAttribute.cs
- QilList.cs
- ContextBase.cs
- DuplexClientBase.cs
- NumberSubstitution.cs
- Triangle.cs
- XmlReader.cs
- CompiledQueryCacheKey.cs
- CacheOutputQuery.cs
- PageCopyCount.cs
- RemoteX509AsymmetricSecurityKey.cs
- DisplayNameAttribute.cs
- SemanticBasicElement.cs
- ToolStripItemClickedEventArgs.cs
- Profiler.cs
- UIEndRequest.cs
- InternalUserCancelledException.cs
- DefaultEventAttribute.cs
- IssuedSecurityTokenParameters.cs
- WebPartCloseVerb.cs
- odbcmetadatafactory.cs