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
- Size.cs
- RequiredFieldValidator.cs
- AppDomainFactory.cs
- GridSplitter.cs
- HashMembershipCondition.cs
- TextEndOfParagraph.cs
- Byte.cs
- SqlConnectionManager.cs
- XamlWriterExtensions.cs
- SiteMapSection.cs
- SQLBytesStorage.cs
- ValueOfAction.cs
- XmlSchemaSimpleContentExtension.cs
- AdjustableArrowCap.cs
- CustomCredentialPolicy.cs
- Polygon.cs
- EndpointInfo.cs
- EntityProviderFactory.cs
- XmlQueryContext.cs
- NameNode.cs
- SmtpFailedRecipientsException.cs
- FormView.cs
- TypedServiceChannelBuilder.cs
- WebRequestModulesSection.cs
- WebPartEditVerb.cs
- InfiniteTimeSpanConverter.cs
- MessageQueue.cs
- SapiAttributeParser.cs
- CodeTypeMemberCollection.cs
- DataGridSortCommandEventArgs.cs
- SessionIDManager.cs
- TextViewBase.cs
- TimeoutValidationAttribute.cs
- DependencyObjectProvider.cs
- SizeChangedInfo.cs
- DocumentOrderComparer.cs
- NetTcpSectionData.cs
- StorageEntityContainerMapping.cs
- TrustLevel.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- LocalizabilityAttribute.cs
- ByteStack.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DesignerForm.cs
- LockRecursionException.cs
- HyperLink.cs
- SizeKeyFrameCollection.cs
- CompoundFileIOPermission.cs
- HMACRIPEMD160.cs
- BitmapDownload.cs
- DataGridViewComboBoxColumn.cs
- Thumb.cs
- SafeFreeMibTable.cs
- SecurityUtils.cs
- Validator.cs
- ExpressionQuoter.cs
- SoapSchemaMember.cs
- DataFormat.cs
- ISAPIApplicationHost.cs
- TextTreeRootNode.cs
- HttpServerVarsCollection.cs
- XmlSchemaComplexContentRestriction.cs
- ExceptionValidationRule.cs
- _HelperAsyncResults.cs
- HwndSourceParameters.cs
- DesignerRegion.cs
- TagElement.cs
- CacheMemory.cs
- OptionUsage.cs
- ProfileSection.cs
- WhitespaceSignificantCollectionAttribute.cs
- DotExpr.cs
- COMException.cs
- DbCommandDefinition.cs
- ASCIIEncoding.cs
- XMLUtil.cs
- TracePayload.cs
- XmlNamespaceDeclarationsAttribute.cs
- CompilerState.cs
- UnionCqlBlock.cs
- DataGridViewColumnHeaderCell.cs
- StringExpressionSet.cs
- BindUriHelper.cs
- XmlObjectSerializerReadContextComplexJson.cs
- QuerySelectOp.cs
- DrawingVisualDrawingContext.cs
- DataGridColumnHeadersPresenter.cs
- HttpProfileBase.cs
- AnnotationHelper.cs
- DeflateEmulationStream.cs
- SmiMetaDataProperty.cs
- XmlProcessingInstruction.cs
- ZipIOExtraFieldZip64Element.cs
- ProviderSettingsCollection.cs
- ISAPIWorkerRequest.cs
- DataGridViewSelectedRowCollection.cs
- ContextProperty.cs
- HtmlAnchor.cs
- Win32SafeHandles.cs
- FixUp.cs