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
- DataContext.cs
- BezierSegment.cs
- ContainerUtilities.cs
- ServiceNotStartedException.cs
- TableRow.cs
- ThreadStateException.cs
- HebrewCalendar.cs
- ThreadAbortException.cs
- XmlSchemaInclude.cs
- DataServiceHost.cs
- KeysConverter.cs
- AnimationClockResource.cs
- x509store.cs
- AdPostCacheSubstitution.cs
- IdentifierService.cs
- DefaultIfEmptyQueryOperator.cs
- DataBoundControlHelper.cs
- AddInBase.cs
- FormViewPageEventArgs.cs
- TextTrailingCharacterEllipsis.cs
- ViewGenResults.cs
- SerializerDescriptor.cs
- XmlCharType.cs
- BuildResult.cs
- WbemProvider.cs
- DragCompletedEventArgs.cs
- CodeTypeMember.cs
- SourceFileInfo.cs
- SystemColors.cs
- XsltInput.cs
- ResourceType.cs
- EventPropertyMap.cs
- BuilderInfo.cs
- XmlBoundElement.cs
- DataGridViewMethods.cs
- RemotingException.cs
- ZoneLinkButton.cs
- BamlMapTable.cs
- JpegBitmapEncoder.cs
- HMACSHA256.cs
- TextUtf8RawTextWriter.cs
- PublisherIdentityPermission.cs
- TextDataBindingHandler.cs
- FrameAutomationPeer.cs
- CompilerParameters.cs
- LingerOption.cs
- AuthenticatingEventArgs.cs
- RecognizedWordUnit.cs
- WindowsEditBoxRange.cs
- Facet.cs
- InvalidCastException.cs
- XmlDataSourceNodeDescriptor.cs
- EntityContainerRelationshipSet.cs
- RightsManagementPermission.cs
- _HeaderInfoTable.cs
- _FtpControlStream.cs
- PropertyChangedEventManager.cs
- SHA512Managed.cs
- Button.cs
- ToolboxItemAttribute.cs
- ApplicationTrust.cs
- HttpRuntimeSection.cs
- BaseDataBoundControl.cs
- RadioButton.cs
- PointHitTestResult.cs
- SyntaxCheck.cs
- SystemException.cs
- Cursors.cs
- XmlSchemaAny.cs
- CachedFontFace.cs
- ComEventsInfo.cs
- SpellerError.cs
- NameObjectCollectionBase.cs
- GenericUriParser.cs
- SqlLiftWhereClauses.cs
- PartialCachingAttribute.cs
- ZipIORawDataFileBlock.cs
- TrustManagerPromptUI.cs
- ItemCheckEvent.cs
- WaitingCursor.cs
- BitmapEffectvisualstate.cs
- AdapterDictionary.cs
- OdbcEnvironmentHandle.cs
- Missing.cs
- DaylightTime.cs
- FormatVersion.cs
- ServiceHostingEnvironmentSection.cs
- ListItemCollection.cs
- TCPClient.cs
- DateTimeUtil.cs
- X509IssuerSerialKeyIdentifierClause.cs
- SecurityPolicySection.cs
- AuthenticationService.cs
- CompilerHelpers.cs
- WebPartConnectionsDisconnectVerb.cs
- CombinedTcpChannel.cs
- HandledEventArgs.cs
- WebExceptionStatus.cs
- SiteOfOriginContainer.cs
- CfgSemanticTag.cs