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
- DbParameterCollectionHelper.cs
- RowParagraph.cs
- VerificationAttribute.cs
- UnmanagedHandle.cs
- _LocalDataStoreMgr.cs
- WebPartUserCapability.cs
- QueryStringConverter.cs
- NotImplementedException.cs
- prefixendpointaddressmessagefiltertable.cs
- DocumentPageViewAutomationPeer.cs
- PartialArray.cs
- XmlReaderSettings.cs
- OpCellTreeNode.cs
- ConfigurationElement.cs
- IIS7UserPrincipal.cs
- DelayedRegex.cs
- BindingsCollection.cs
- Queue.cs
- FrameworkElement.cs
- XmlSchemaAttributeGroup.cs
- Int32EqualityComparer.cs
- Comparer.cs
- ChangePasswordDesigner.cs
- ContentPosition.cs
- MessageHeaderDescriptionCollection.cs
- OrCondition.cs
- ZipIORawDataFileBlock.cs
- ClientFormsIdentity.cs
- ReflectionHelper.cs
- TemplateInstanceAttribute.cs
- PartitionResolver.cs
- DateTimeHelper.cs
- TextRunCacheImp.cs
- SelectionItemProviderWrapper.cs
- DynamicDataRouteHandler.cs
- AddInProcess.cs
- ReversePositionQuery.cs
- Classification.cs
- Pair.cs
- ThumbButtonInfo.cs
- SingleObjectCollection.cs
- EdmValidator.cs
- BrowserInteropHelper.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- XmlSerializerVersionAttribute.cs
- DataGridViewTopRowAccessibleObject.cs
- DirtyTextRange.cs
- PenLineCapValidation.cs
- ContainerAction.cs
- NamespaceDecl.cs
- ScriptResourceHandler.cs
- ElementNotAvailableException.cs
- Mouse.cs
- TimeoutException.cs
- XmlSchemaExporter.cs
- TreePrinter.cs
- GeneratedCodeAttribute.cs
- InvalidOperationException.cs
- DispatcherFrame.cs
- OrderedDictionary.cs
- SqlDuplicator.cs
- EmbeddedObject.cs
- DataBindEngine.cs
- SmiContext.cs
- PkcsMisc.cs
- XmlSchemaAll.cs
- Dump.cs
- AttributeSetAction.cs
- CellCreator.cs
- NativeMethods.cs
- CommandDevice.cs
- ColorMatrix.cs
- Stackframe.cs
- QuaternionAnimation.cs
- CheckBox.cs
- BrowserPolicyValidator.cs
- StackBuilderSink.cs
- BoundingRectTracker.cs
- AutoResetEvent.cs
- ParameterBinding.cs
- SqlLiftIndependentRowExpressions.cs
- UrlAuthorizationModule.cs
- StyleHelper.cs
- UIElement3D.cs
- WorkflowTraceTransfer.cs
- WindowsListViewScroll.cs
- WebPartZone.cs
- UpDownBase.cs
- TraceLog.cs
- StateFinalizationActivity.cs
- SelectionChangedEventArgs.cs
- RtfControlWordInfo.cs
- TextTreeTextBlock.cs
- SecurityManager.cs
- Tile.cs
- NaturalLanguageHyphenator.cs
- DefaultParameterValueAttribute.cs
- GenericsInstances.cs
- RegistryKey.cs
- ReadOnlyHierarchicalDataSource.cs