Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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); ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer; 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
- MappingModelBuildProvider.cs
- InProcStateClientManager.cs
- Parameter.cs
- ComAwareEventInfo.cs
- GraphicsContext.cs
- _RequestCacheProtocol.cs
- SelectorItemAutomationPeer.cs
- DbDeleteCommandTree.cs
- ApplicationInfo.cs
- ListBoxDesigner.cs
- ReadWriteObjectLock.cs
- QueryableDataSourceEditData.cs
- TimeManager.cs
- SyncOperationState.cs
- XmlNodeComparer.cs
- InputElement.cs
- EventQueueState.cs
- ZipIOExtraFieldPaddingElement.cs
- DrawingVisualDrawingContext.cs
- ChangeBlockUndoRecord.cs
- NavigationProperty.cs
- DataServiceConfiguration.cs
- CodePrimitiveExpression.cs
- RectAnimationClockResource.cs
- FacetValues.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- CompositeActivityMarkupSerializer.cs
- TextServicesManager.cs
- IChannel.cs
- IResourceProvider.cs
- HTMLTextWriter.cs
- Int64KeyFrameCollection.cs
- HttpClientChannel.cs
- MappingItemCollection.cs
- DataSourceControl.cs
- Context.cs
- GeometryGroup.cs
- InputBuffer.cs
- QueryResult.cs
- OperationAbortedException.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- RelativeSource.cs
- SqlCacheDependencySection.cs
- HtmlTextViewAdapter.cs
- FieldToken.cs
- StaticSiteMapProvider.cs
- TableStyle.cs
- AuthenticationModuleElement.cs
- WsatConfiguration.cs
- AuthenticationModuleElementCollection.cs
- ComponentResourceManager.cs
- KeyEvent.cs
- OledbConnectionStringbuilder.cs
- FixedSOMGroup.cs
- RequestTimeoutManager.cs
- CounterCreationDataConverter.cs
- SemaphoreFullException.cs
- BatchParser.cs
- RightsManagementInformation.cs
- ShaderEffect.cs
- TransportOutputChannel.cs
- RoleManagerModule.cs
- NavigationProperty.cs
- ValidationSummary.cs
- LinearKeyFrames.cs
- SimpleBitVector32.cs
- MessagePropertyAttribute.cs
- messageonlyhwndwrapper.cs
- OdbcDataReader.cs
- ComplexObject.cs
- CalloutQueueItem.cs
- SurrogateSelector.cs
- Baml2006ReaderContext.cs
- Rect3D.cs
- InvocationExpression.cs
- KeyProperty.cs
- OdbcErrorCollection.cs
- TextEditorCopyPaste.cs
- CommandExpr.cs
- XsdDateTime.cs
- AspNetHostingPermission.cs
- DataGridComboBoxColumn.cs
- GeneralTransformCollection.cs
- MessageRpc.cs
- AudioSignalProblemOccurredEventArgs.cs
- Parser.cs
- ColorContextHelper.cs
- ListArgumentProvider.cs
- CommunicationObjectFaultedException.cs
- XmlSchemaSimpleContentRestriction.cs
- HttpContext.cs
- CapabilitiesUse.cs
- UriWriter.cs
- TimeEnumHelper.cs
- UrlMappingCollection.cs
- SecurityTokenAuthenticator.cs
- XsdBuilder.cs
- XmlCompatibilityReader.cs
- Rect3DConverter.cs